2017-08-21 9 views
-1

リストをマスター詳細ビューで表示する必要があります。マスタービューは正常に機能しますが、詳細ビューへのバインディングは機能しません。何が間違っているのですか?C#XAMLマスター詳細バインディングが機能しません

背後にあるコード:

DataContext = new VirtualizingCollection<LinesSummary>(fs, 100) 

LinesSummaryクラス:

public class LinesSummary { 

    public string dateString { get; set; } 
} 

XAML:マスタービューの

<StackPanel> 
     <ListView Margin="5" Style="{DynamicResource lvStyle}" Height="200" x:Name="Master"/> 
     <ListView Margin="5" Style="{DynamicResource lvStyle_Detail}" Height="200" x:Name="Detail"/> 
    </StackPanel> 

動的なリソース:

 <Setter Property="VirtualizingStackPanel.IsVirtualizing" Value="True"/> 
     <Setter Property="VirtualizingStackPanel.VirtualizationMode" Value="Recycling"/> 
     <Setter Property="ScrollViewer.IsDeferredScrollingEnabled" Value="True"/> 
     <Setter Property="ListView.ItemsSource" Value="{Binding}"/> 
     <Setter Property="ListView.View"> 
      <Setter.Value> 
       <GridView> 
        <GridViewColumn Header="Date" Width="100"> 
         <GridViewColumn.CellTemplate> 
          <DataTemplate> 
           <TextBlock Text="{Binding dateString}"/> 
          </DataTemplate> 
         </GridViewColumn.CellTemplate> 
        </GridViewColumn> 
       </GridView> 
      </Setter.Value> 
     </Setter> 
    </Style> 

詳細ビューのための動的リソース:

<Style x:Key="lvStyle_Detail" TargetType="{x:Type ListView}"> 
     <Setter Property="VirtualizingStackPanel.IsVirtualizing" Value="True"/> 
     <Setter Property="VirtualizingStackPanel.VirtualizationMode" Value="Recycling"/> 
     <Setter Property="ScrollViewer.IsDeferredScrollingEnabled" Value="True"/> 
     <Setter Property="ListView.ItemsSource" Value="{Binding ElementName=Master, Path=SelectedItem.LinesSummary}"/> 
     <Setter Property="ListView.View"> 
      <Setter.Value> 
       <GridView> 
        <GridViewColumn Header="aaa" Width="100"> 
         <GridViewColumn.CellTemplate> 
          <DataTemplate> 
           <TextBlock Text="{Binding dateString}"/> 
          </DataTemplate> 
         </GridViewColumn.CellTemplate> 
        </GridViewColumn> 
       </GridView> 
      </Setter.Value> 
     </Setter> 
    </Style> 
+1

myListの型は何ですか?クラスはどのように定義されていますか? – mm8

+0

詳細ビューの 'ItemsSource'が' Path = SelectedItem.LinesSummary'で、 'Path = SelectedItem'ではないのはなぜですか? –

+0

@ mm8:myListはIListから継承した自己作成コレクション –

答えて

1

あなたは、このような二ListViewItemsSourceプロパティをバインドしても、それは動作しませんListViewItemsSourceだけそうIEnumerableにバインドすることができます。

ItemsSource="{Binding ElementName=Master, Path=SelectedItem}" 

... LinesSummaryIEnumerableではありません。

Masterで選択した項目の唯一最大があるので、あなたにもそのSelectedItemdateStringプロパティにTextBlockをバインドすることがあります

<StackPanel> 
    <ListView Margin="5" Style="{DynamicResource lvStyle}" Height="200" x:Name="Master"/> 
    <ListView Margin="5" Style="{DynamicResource lvStyle_Detail}" Height="200" x:Name="Detail"> 
     <ListViewItem> 
      <TextBlock Text="{Binding Path=SelectedItem.dateString, ElementName=Master}" /> 
     </ListViewItem> 
    </ListView> 
</StackPanel> 

lvStyle_Detailからこのセッターを削除します。

<Setter Property="ListView.ItemsSource" Value="{Binding ElementName=Master, Path=SelectedItem.LinesSummary}"/> 
+0

はい、これです。ありがとうございました! –

関連する問題