C# 如何将datagrid与包含另一个类的对象的类绑定
sry但我是wpf的新手, 我有一个名为generatedMessage的类,正在尝试将其与datagrid绑定C# 如何将datagrid与包含另一个类的对象的类绑定,c#,wpf,wpfdatagrid,C#,Wpf,Wpfdatagrid,sry但我是wpf的新手, 我有一个名为generatedMessage的类,正在尝试将其与datagrid绑定 class generatedMessage { public CanMessage cmsg { set; get; } public int cycleTime { set; get; } public generatedMessage(){} } public class CanMessage { public byte[] data { set
class generatedMessage
{
public CanMessage cmsg { set; get; }
public int cycleTime { set; get; }
public generatedMessage(){}
}
public class CanMessage
{
public byte[] data { set; get; }
public ushort dlc { set; get; }
public ushort flags { set; get; }
public uint id { set; get; }
public ulong res1 { set; get; }
public ulong res2 { set; get; }
}
正如您看到generatedMessage类有一个CanMessage类的对象一样,我之前已经使用CanMessage类完成了这项工作,如下所示
TraceTable.Items.Add /*- at TraceTable is a datagrid -*/
(
new CanMessage()
{
data = msg.data,
dlc = msg.dlc,
id = msg.id,
flags = msg.flags,
res1 = msg.res1,
res2 = msg.res2
}
);
//xml file below
<DataGrid x:Name="TraceTable" Grid.Column="0" DockPanel.Dock="Top" SelectionMode="Extended" AutoGenerateColumns="False" SelectionUnit="FullRow" Margin="0,45,4,0">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=data}" Header="Data" IsReadOnly="true"/>
<DataGridTextColumn Binding="{Binding Path=dlc}" Header="DLC" IsReadOnly="true"/>
<DataGridTextColumn Binding="{Binding Path=id}" Header="ID" IsReadOnly="true"/>
<DataGridTextColumn Binding="{Binding Path=flag}" Header="Flag" IsReadOnly="true"/>
<DataGridTextColumn Binding="{Binding Path=res1}" Header="Res1" IsReadOnly="true"/>
<DataGridTextColumn Binding="{Binding Path=res2}" Header="Res2" IsReadOnly="true"/>
</DataGrid.Columns>
</DataGrid>
TraceTable.Items.Add/*-at-TraceTable是一个数据网格-*/
(
新消息()
{
data=msg.data,
dlc=msg.dlc,
id=msg.id,
flags=msg.flags,
res1=msg.res1,
res2=msg.res2
}
);
//下面是xml文件
那么我的问题是如何使用generatedMessage类实现它?我想让datagrid查看所有canMessage属性+周期时间(一个7列的datagrid)如果我正确理解了这个问题,那么您应该添加类型为“generatedMessage”的项并进行如下绑定:
Binding={Binding cycleTime}
Binding={Binding cmsg.dlc}
...
etc.
通常,您不应该手动将项添加到DataGrid。最好的方法是:在ViewModel中创建ObservableCollection,并在DataGrid中设置属性“ItemsSource”:
ItemsSource="{Binding Collection}"
然后将项目添加到此集合,而不是添加到DataGrid。
为了更好地理解这个主题,您可以阅读有关MVVM模式的内容;-)