【问题标题】:wpf Nested Datagrid not Populatingwpf嵌套数据网格未填充
【发布时间】: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


    【解决方案1】:

    没有看到更多您的代码,我的猜测是内部网格没有填充,因为它没有绑定到您认为的内容。如果您在调试程序时打开输出窗口,您会看到任何绑定错误吗?它应该这样说:BindingExpression path error: 'SelectedCompensationEvent.Correspondance' property not found on 'object' ...

    如果是这种情况,您需要告诉嵌套网格显式绑定到数据上下文中的对象。如果您不确定如何操作,此链接可能会有所帮助:http://www.wintellect.com/blogs/sloscialo/where-s-my-datacontext

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-19
      • 2011-06-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多