2017-09-07 4 views
0

Innerhalb einer ListView Steuerung, wie die DisplayMemberPath Eigenschaft zu verwenden, wenn ich die ItemContainerStyle ändern möchte?Wie kann der DisplayMemberPath in einem ListView mit einem ItemContainerStyle verwendet werden?

Ich benutzte eine ListView Kontrolle im ControlTemplate meiner Kontrolle und die DisplayMemberPath Eigenschaft wird über Binding von außerhalb der Kontrolle festgelegt.

<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> 

Ist es möglich, diese in XAML zu lösen? Wie ist es in der ursprünglichen ControlTemplate gelöst?


ich versuche, es zu lösen mit einem MultiValueConverter, wo ich den Sammelgegenstand und DisplayMemberPath binden.

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

Ist es notwendig? Oder ist der Anzeigewert bereits von der ursprünglichen ListView Steuerung gelöst?

Antwort

2

Ist es möglich, es durch XAML zu lösen?

Nein, verwenden Sie entweder ein DisplayMemberPath oder ItemTemplate/ItemContainerStyle aber nicht beide. Die Eigenschaft DisplayMemberPath soll auch auf string festgelegt werden, die den Namen einer Eigenschaft der zugrunde liegenden Datenklasse angibt. Es ist nicht eine Abhängigkeitseigenschaft, an die Sie binden können.

Verwandte Themen