【发布时间】:2020-05-01 09:33:07
【问题描述】:
我正在努力思考如何正确地将数据网格列与子类中的数据绑定。为了澄清问题,我做了一个小示例,如果解决了,将对使代码正常工作有很大帮助。
以下是定义的类:
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 属性的任何想法? 提前致谢!
【问题讨论】:
-
您可以简单地覆盖
SubItem类中的ToString()方法,或者为此定义日期列模板 -
也可以绑定到子类
<DataGridTextColumn Header="Data" Binding="{Binding Data.Data}"/>
标签: c# wpf data-binding datagrid