数据网格将一个对象的多个属性绑定到列
本文关键字:属性 绑定 数据网 网格 一个对象 数据 | 更新日期: 2024-06-14 01:29:27
我有一个具有多个属性的对象。然而,可以说,其中一些属性包含同一组的信息。我想在表中显示这些属性,这样我就可以把同一组的属性放在同一列中。然而,我不知道该怎么做。如果我有几个相同类型的对象(将它们放在列表中并获得默认的集合视图源),我确实理解如何做到这一点。但在这种情况下,我只有一个具有多个属性的对象。
我的问题是:如何将这些属性组合在一起,在数据网格中形成一列。所有属性都是相同的数据类型(ushort)。
只是为了说明我的意思:
public ushort MyProperty1
{
get{ return myProperty1}
set
{
if(value==myProperty1)
return;
myProperty1=value;
OnPropertyChanged("MyProperty1");
}
}
public ushort MyProperty2
{
get{ return myProperty2}
set
{
if(value==myProperty2)
return;
myProperty2=value;
OnPropertyChanged("MyProperty2");
}
}
public ushort MyProperty3
{
get{ return myProperty3}
set
{
if(value==myProperty3)
return;
myProperty3=value;
OnPropertyChanged("MyProperty3");
}
}
我想在数据网格的同一列中显示这些属性
感谢:)
您有几个实现目标的选项。您可以在标准DataGridTextColumn
中使用MultiBinding
和StringFormat
。
或者,可以定义DataTemplate
,并将其设置为DataGridTemplateColumn
元素的CellTemplate
属性。
我已经包含了一些链接来帮助您入门。
您可以尝试以下
<DataGrid ItemsSource="{Binding Values}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Values">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBox Text="{Binding MyProperty1}"/>
<TextBox Text="{Binding MyProperty2}"/>
<TextBox Text="{Binding MyProperty3}"/>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>