2017-09-07 5 views
0

ItemContainerStyleを変更する場合は、コントロール内で、DisplayMemberPathプロパティの使用方法を教えてください。ItemContainerStyleでListViewのDisplayMemberPathを使用するにはどうすればよいですか?

私は私のコントロールのControlTemplateListViewコントロールを使用してDisplayMemberPathプロパティは、コントロールの外からBindingを経由して設定されています。

<ListView ItemsSource="{TemplateBinding ItemsSource}" 
      DisplayMemberPath="{TemplateBinding DisplayMemberPath}"> 
    <ListView.ItemsPanel> 
     <ItemsPanelTemplate> 
      <StackPanel Orientation="Horizontal" /> 
     </ItemsPanelTemplate> 
    </ListView.ItemsPanel> 
    <ListView.ItemContainerStyle> 
     <Style TargetType="{x:Type ListViewItem}"> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type ListViewItem}"> 
         <StackPanel Orientation="Horizontal"> 
          <TextBlock Text="Item:" /> 
          <TextBlock Text="{Binding}" /> 
          <TextBlock Text=", " /> 
         </StackPanel> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 

     </Style> 
    </ListView.ItemContainerStyle> 
</ListView> 

それは、XAMLでこの問題を解決することは可能ですか?それは元のControlTemplateでどのように解決されますか?


私はコレクションアイテムとDisplayMemberPathをバインドMultiValueConverter、とそれを解決しようとします。

<TextBlock> 
    <TextBlock.Text> 
     <MultiBinding Converter="{StaticResource NameToValueConverter}"> 
      <Binding /> 
      <Binding Path="DisplayMemberPath" RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type ListView}}"/> 
     </MultiBinding> 
    </TextBlock.Text> 
</TextBlock> 

必要ですか?または、元のListViewコントロールによって表示値が既に解決されていますか?

答えて

2

XAMLで解決できますか?

いいえ、あなたはどちらかDisplayMemberPathまたはItemTemplate/ItemContainerStyleではなく、両方を使用します。

また、DisplayMemberPathプロパティは、基礎となるデータクラスのプロパティの名前を指定するstringに設定されているものとします。 ではなく、バインドできる依存プロパティーであるです。

関連する問題