1
リスト内のキー値のペア項目を展開するときに2つのデータ型を表示する必要があります。また、キー値のペア項目のキーは、エクスパンダのヘッダーにする必要があります。 最初のテーブルは最初のデータグリッドに、2番目のテーブルは2番目のグリッドにバインドする必要があります。 問題は、ItemsControlの2番目の「アイテム」が最初のアイテムと同じ値を表示することです。 (私の推測では、VMが正しくListOfKeyValuePairs用データを生成するのでDataGridののItemsSourceバインディングが正しくないということである。)リストをバインドする<KeyValuePair <string、List <DataTable> >> wpfを制御する
<!-- Data grid template -->
<DataTemplate x:Key="ValuesTemplate">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition />
</Grid.RowDefinitions>
<TextBlock Text="data grid header text" Margin="20,0,0,0" Grid.Row="2" />
<DataGrid Grid.Row="0" ItemsSource="{Binding [0]}" />
<DataGrid Grid.Row="1" ItemsSource="{Binding [1]}" />
</Grid>
</DataTemplate>
<!-- List of data tables -->
<ItemsControl ItemsSource="{Binding ListOfKeyValuePairs}" VirtualizingStackPanel.IsVirtualizing="True">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Expander IsExpanded="True" Margin="0,0,0,10">
<Expander.Header>
<TextBlock Text="{Binding Key}" Margin="0,0,20,0" VerticalAlignment="Top" />
</Expander.Header>
<ContentControl Content="{Binding Value}" ContentTemplate="{StaticResource ValuesTemplate}" ScrollViewer.CanContentScroll="True" Margin="20,0,0,0" />
</Expander>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
疑わしいバインディングに 'PresentationTraceSources.TraceLevel = High'を入れてください。同様に、 '{Binding Foo、PresentationTraceSources.TraceLevel = High}'。デバッガでプログラムを実行し、VSの出力ペインに表示される出力を確認します。それはバインディングのターゲットを見つけるために何をしているのかを教えてくれます。失敗した場合は、見つかったものがあれば何かを教えてくれます。 –