【发布时间】:2014-05-23 23:00:38
【问题描述】:
我在使用视图模型时在 wpf 中填充嵌套数据网格时遇到问题:
我有两个课程:CompensationEvent 和 Compensation Event Correspondence。 CompensationEvent 包含 List Correspondence 的属性。 (我知道在代码中我拼错了 Correspondence - 不过这不是问题)
我希望我的主数据网格填充 ComppensationEvents,而嵌套网格填充 SelectedCompensationEvent 属性的对应关系。
这是我的 xaml(仅显示相关部分):
<DataGrid x:Name="objDataGrid" Grid.Row="2" Grid.ColumnSpan="2" Margin="5" AutoGenerateColumns="False" CanUserAddRows="False" SelectedItem="{Binding Path=SelectedCompensationEvent}"
ItemsSource="{Binding Path=CompensationEvents}">
<DataGrid.Columns>
<DataGridTextColumn Header="Project" Binding="{Binding Path=Project}"/>
<DataGridTextColumn Header="Title" Binding="{Binding Path=Title}"/>
<DataGridTextColumn Header="Commments" Binding="{Binding Path=Comment}"/>
<DataGridTextColumn Header="Date Raised" Binding="{Binding Path=DateRaised}"/>
</DataGrid.Columns>
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<DataGrid Height ="100" AutoGenerateColumns="False" ItemsSource="{Binding Path=SelectedCompensationEvent.Correspondance}" CanUserAddRows="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Correspondance Type" Binding="{Binding Path=CorrespondanceTypeID.Heading}" Width="*"/>
<DataGridTextColumn Header ="Issued By" Binding="{Binding Path=CorrespondanceTypeID.IssuedBy.PartyName}" Width="*"/>
<DataGridTextColumn Header ="Date Issued" Binding="{Binding Path=DateIssued}" Width="*"/>
</DataGrid.Columns>
</DataGrid>
</DataTemplate>
</DataGrid.RowDetailsTemplate>
</DataGrid>
<DataGrid Grid.ColumnSpan="2" Margin="5" Grid.Row ="4" Height ="100" AutoGenerateColumns="False" ItemsSource="{Binding Path=SelectedCompensationEvent.Correspondance}" CanUserAddRows="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Correspondance Type" Binding="{Binding Path=CorrespondanceTypeID.Heading}" Width="*"/>
<DataGridTextColumn Header ="Issued By" Binding="{Binding Path=CorrespondanceTypeID.IssuedBy.PartyName}" Width="*"/>
<DataGridTextColumn Header ="Date Issued" Binding="{Binding Path=DateIssued}" Width="*"/>
</DataGrid.Columns>
</DataGrid>
如您所见,我在行详细信息模板中有两个网格和一个嵌套网格。第二个网格(在代码末尾)和嵌套网格的定义完全相同。
当我运行我的应用程序并填充 CompensationEvents 属性时,第一个(外部)网格填充良好,对此感到满意。
当我在外部网格中选择一行并填充 SelectedCompensationEvent 时,下部网格会填充所有对应关系,因此我知道我的视图模型正在工作。然而嵌套的网格仍然是空的。
我唯一能想到的是嵌套网格是在选择行时填充 SelectedCompensationEvent 之前绘制的 - 对吗?
无论如何,任何答案将不胜感激
提前致谢 - 米克
【问题讨论】:
标签: c# wpf mvvm datagrid nested