0

我有一个绑定到自定义类的 ObservableCollection 的 DataGrid。集合是 ViewModel 中的一个属性,网格可以正常工作,包括对集合的更改。

我想使用 RowDetailsTemplate 在 StackPannel 中显示两个额外的集合,如下所示:

        <DataGrid.RowDetailsTemplate>
            <DataTemplate>
                <StackPanel Name="GrcidSP" Orientation="Horizontal">
                    <DataGrid Name="ClusterIndexGrid" AutoGenerateColumns="True" 
                              ItemsSource="{Binding ClusterIndexColumns}"
                              CanUserAddRows="False" CanUserResizeRows="False"
                              Width="Auto"/>
                    <DataGrid Name="IndexGrid" AutoGenerateColumns="True" 
                              ItemsSource="{Binding IndexColumns}"
                              CanUserAddRows="False" CanUserResizeRows="False"
                              Width="Auto"/>
                </StackPanel>
            </DataTemplate>
        </DataGrid.RowDetailsTemplate>

ClusterIndexColumns 和 IndexColumns 是内部网格的绑定源,也是 ViewModel 中的集合。

问题是,当我显示行详细信息时,数据网格是空的,即根本没有加载,没有列或行。

为了了解发生了什么,我用标签替换了内部数据网格:

        <DataGrid.RowDetailsTemplate>
            <DataTemplate>
                <StackPanel Name="GridSP" Orientation="Horizontal">
                    <Label Content="{Binding}" Width="Auto" Background="AliceBlue"/>
                </StackPanel>
            </DataTemplate>
        </DataGrid.RowDetailsTemplate>

并且没有指定绑定源 - {Binding}

标签现在显示作为外部网格源的集合中的自定义类的名称。

所以不知何故,我需要导航回 ViewModel 作为内部网格的数据上下文。

但是,如何,祈祷告诉?

4

1 回答 1

0

好的,所以我通过将 ClusterIndexColumns 和 IndexColumns 集合作为属性添加到显示在主网格中的自定义类来解决这个问题。现在,当我单击该行时,将打开 rowdetails 区域并且内部网格加载正常。

顺便说一句,通过将 SelectedIndex 属性绑定到 ViewModel 中的属性,使用主网格中的选定行更改时填充集合

Mode=OneWayToSource

希望这可以帮助某人。

于 2011-03-23T12:29:40.697 回答