カスタム クラスの ObservableCollection にバインドされた DataGrid があります。コレクションは ViewModel のプロパティであり、コレクションへの変更を含め、グリッドは正常に機能します。
次のように、RowDetailsTemplate を使用して、StackPanel に 2 つの追加コレクションを表示したいと考えています。
<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 に戻る必要があります。
しかし、どうやって教えてください?