【问题标题】:Datagrid binding several properties of one object to columnDatagrid 将一个对象的多个属性绑定到列
【发布时间】:2013-11-29 14:29:37
【问题描述】:

我有一个具有多个属性的对象。然而,其中一些属性包含同一组的信息,可以这么说。我想在表格中显示这些属性,以便在同一列中放置同一组的属性。但是我不确定如何做到这一点。如果我有多个相同类型的对象(将它们放在一个列表中并获取默认的集合视图源),我确实知道该怎么做。但在这种情况下,我只有一个具有多个属性的对象。

我的问题是:如何将这些属性组合在一起以在数据网格中创建一列。所有属性都是相同的数据类型(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");    
    }
}

我想在数据网格的同一列中显示这些属性

谢谢:)

【问题讨论】:

  • 自定义DataGridCellTemplate?

标签: c# wpf binding datagrid model-view


【解决方案1】:

您有几个选项可以实现您的目标。您可以在标准DataGridTextColumn 中使用MultiBindingStringFormat

或者,您可以定义一个DataTemplate 并将其设置为DataGridTemplateColumn 元素的CellTemplate property

我提供了一些链接来帮助您入门。

【讨论】:

  • 哦。数据模板看起来正是我需要使它体面的东西:) 谢谢
【解决方案2】:

你可以试试下面这个

    <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>

【讨论】:

  • 是的。我在考虑。只是我有几个这样的表,每一个都有大约 16 个 3 列。所以在这种情况下有点乱 :) 但还是谢谢 ;)
猜你喜欢
  • 2020-06-22
  • 1970-01-01
  • 1970-01-01
  • 2012-09-17
  • 1970-01-01
  • 2011-04-30
  • 1970-01-01
  • 1970-01-01
  • 2021-09-13
相关资源
最近更新 更多