我正在努力解决如何正确地将datagrid列与子类中的数据绑定的问题。为了解决问题,我已经做了一些示例,如果解决了,将大大有助于使代码正常工作。
以下是定义的类:
public class SubItem
{
public string Data { get; set; }
}
public class Item
{
public int Value { get; set; }
public SubItem Data { get; set; }
}
然后,我如下创建一个observablecollection:
public class IntData : ObservableCollection<Item>
{
public IntData() : base()
{
Item i = new Item() { Value = 56, Data = new SubItem() { Data = "testdata" } };
Add(i);
}
}
这是我的MainWindow代码:
public partial class MainWindow : Window
{
public IntData Integers { get; set; }
public MainWindow()
{
Integers = new IntData();
InitializeComponent();
dataGrid1.ItemsSource = Integers; // This is an important line
}
}
XAML代码保持简单:
<DataGrid Name="dataGrid1" AutoGenerateColumns="False" Margin="12">
<DataGrid.Columns>
<DataGridTextColumn Header="Integers" Binding="{Binding Value}"/>
<DataGridTextColumn Header="Data" Binding="{Binding Data}"/>
</DataGrid.Columns>
</DataGrid>
运行上述操作,您会发现Integers正在正常工作,但在Data列中却没有。任何人关于如何使该列显示Data属性的任何想法?预先感谢!
最简单的解决方法是在ToString()
类中重写SubItem
方法并返回Data
属性
public class SubItem
{
public string Data { get; set; }
public override string ToString()
{
return Data;
}
}
另一个选择是更新DataGridTextColumn
绑定并使用Data
类的Data
属性的Item
属性(您可能需要使用其他名称)
<DataGridTextColumn Header="Data" Binding="{Binding Data.Data}"/>