Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将datagrid与包含另一个类的对象的类绑定_C#_Wpf_Wpfdatagrid - Fatal编程技术网

C# 如何将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

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; 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模式的内容;-)