0

对不起,但我是 wpf 的新手,我有一个名为 generateMessage 的类,并试图将它与数据网格绑定。

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>

所以我的问题是如何使用 generateMessage 类来制作它?我希望数据网格查看所有 canMessage 属性 + 循环时间(具有 7 列的数据网格)

4

1 回答 1

1

如果我正确理解了问题,那么您应该添加“生成的消息”类型的项目并进行绑定,例如:

Binding={Binding cycleTime}
Binding={Binding cmsg.dlc}
...
etc.



通常,您不应手动将项目添加到 DataGrid。最好的方法:在 ViewModel 中创建 ObservableCollection 并在 DataGrid 中设置属性“ItemsSource”:

ItemsSource="{Binding Collection}"

然后将项目添加到此集合,而不是 DataGrid。为了更好地理解该主题,您可以阅读有关 MVVM 模式的信息;-)。

于 2013-06-22T12:39:05.473 回答