Como você acessar o DisplayMemberPath a partir de uma caixa de listagem ao tentar vinculá-lo ao conteúdo do ListBoxItem?
Pergunta
Eu tenho substituído o ListBox janelas, a fim de exibir uma imagem e um pedaço de texto em cada ListBoxItem, mas eu preciso filtrar o conteúdo do texto exibido Eu estava esperando para fazer isso, acessando o DisplayMemberPath do ListBox real no entanto Eu não posso fazê-lo funcionar.
<Setter Property="ItemContainerStyle">
<Setter.Value>
<!-- Simple ListBoxItem - This is used for each Item in a ListBox. The item's content is placed in the ContentPresenter -->
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="SnapsToDevicePixels" Value="true"/>
<Setter Property="OverridesDefaultStyle" Value="true"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBoxItem}">
<Grid SnapsToDevicePixels="true">
<Border x:Name="Border">
<Grid Height="40">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image
Source="{Binding Path=ThumbnailImage}"
Height="30"
Width="30"
Grid.Column="0"/>
<Label
x:Name="Text"
Content="{TemplateBinding DisplayMemberPath}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
VerticalContentAlignment="Center"
HorizontalAlignment="Stretch"
Grid.Column="1"
Height="40"/>
</Grid>
</Border>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="true">
<Setter Property="FontWeight" Value="Bold" TargetName="Text"/>
<Setter Property="Foreground" Value="White" TargetName="Text"/>
<Setter Property="Background" Value="Blue" TargetName="Border"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Setter.Value>
</Setter>
Este é o código que estou usando para o meu estilo e esta foi a linha Eu não posso começar a trabalhar:
Conteúdo = "{TemplateBinding DisplayMemberPath}"
Ele reclama com: Não é possível localizar o membro estático 'DisplayMemberPathProperty' do tipo 'ListBoxItem'
Alguém pode me apontar na direção certa?
Solução
Sua ok, eu tenho o valor da caixa de listagem agora, toda a necessidade i fazer é convertê-lo para tomar a propriedade eu preciso do dataobject na itemssource.
Apenas no caso de alguém queria saber o código:
Content="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=ListBox}, Path=DisplayMemberPath}"