数据网格将一个对象的多个属性绑定到列

本文关键字:属性 绑定 数据网 网格 一个对象 数据 | 更新日期: 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中使用MultiBindingStringFormat

或者,可以定义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>