2016-11-03 16 views
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> 
+0

疑わしいバインディングに 'PresentationTraceSources.TraceLevel = High'を入れてください。同様に、 '{Binding Foo、PresentationTraceSources.TraceLevel = High}'。デバッガでプログラムを実行し、VSの出力ペインに表示される出力を確認します。それはバインディングのターゲットを見つけるために何をしているのかを教えてくれます。失敗した場合は、見つかったものがあれば何かを教えてくれます。 –

答えて

1

あなたのコードが完璧に働いています。しかし、ValuesTemplateの中にGridを使用しています。両方の項目

<DataGrid ItemsSource="{Binding [0]}" /> 
<DataGrid ItemsSource="{Binding [1]}" /> 

は同じ位置にあります。 1つのDataGridは、もう1つのDataGridをカバーしています。

<DataGrid Grid.Row="0" ItemsSource="{Binding [0]}" /> 
<DataGrid Grid.Row="1" ItemsSource="{Binding [1]}" /> 

または単純なStackPanelを使用するように定義された行を使用してください。

関連する問題