Wie greifen Sie die DisplayMemberPath aus einem ListBox wenn sie versuchen, es auf den Inhalt des ListBoxItem zu binden?

StackOverflow https://stackoverflow.com/questions/246792

  •  05-07-2019
  •  | 
  •  

Frage

Ich habe das Fenster List-Box, um außer Kraft gesetzt, ein Bild und einen Text in jedem ListBoxItem angezeigt werden, aber ich brauche den Inhalt des Textes zu filtern angezeigt Ich hatte gehofft, dies zu tun, indem Sie die DisplayMemberPath der aktuellen List-Box Zugriff jedoch ich kann nicht daran zu arbeiten.

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

Dies ist der Code, den ich für meinen Stil verwende und das war die Linie, die ich nicht zum Laufen bringen:

content = "{Template DisplayMemberPath}"

Sie wirft mit: Kann nicht das statische Element ‚DisplayMemberPathProperty‘ vom Typ ‚ListBoxItem‘

finden

Kann jemand mich in die richtige Richtung?

War es hilfreich?

Lösung

Es ist ok, ich den Wert aus der List-Box jetzt bekommen habe, alles, was ich tun muß, ist es wandelt die Eigenschaft zu nehmen i vom Datenobjekt in der Itemssource benötigen.

Nur für den Fall, dass jemand wollte den Code wissen:

Content="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=ListBox}, Path=DisplayMemberPath}"
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top