Ich versuche, meinen Kopf um das WPF-Modell zu wickeln.WPF-Grundlagen: Wie legt man eine externe Eigenschaft in einem DataTrigger fest?
Ich habe ein Listenfeld mit Elementen. Innerhalb der Listbox Elemente sind Zeichenfolge-IDs. Das funktioniert gut. Was ich will ist es so zu haben die Kennung des aktuell ausgewählte Element ist in meinem Code-behind zugänglich für die umschließende Steuer
ich dieses:.
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Width="320">
<Label Content="{Binding Path=ShortName}" Style="{StaticResource ListHeader}"/>
<TextBlock TextWrapping="Wrap" Text="{Binding Path=Description}" Style="{StaticResource ListText}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
Und ich denke, ich so etwas hinzufügen sollte:
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBoxItem}},Path=IsSelected}" Value="True">
<Setter Property="" TargetName="">
<Setter.Value>
</Setter.Value>
</Setter>
</DataTrigger>
Aber ich bin verloren bezüglich, wie man den Setter einstellt, um eine Eigenschaft zu setzen, die ein Teil der einschließenden Kontrolle ist (dh die Außenwelt). Ich denke ich habe das irgendwie rückwärts?
Sorry das ausgewählte Element ist nicht von einer benutzerdefinierten Klasse, es ist ein StackPanel wie in der ListBox.ItemTemplate über – evilfred
Hallo EvilFred, ich meine Xaml genau wie Ihre, aber Sie binden eine Sammlung von Objekten an die itemsource Eigenschaft der Listbox nehme ich an. Die Eigenschaft selecteditem der Listbox gibt Ihnen Zugriff auf das gebundene Objekt, das nicht die UI-Elemente ausgewählt hat. – Blounty
oh duh, ich verstehe. die magische Trennung von UI von Nicht-UI-Elementen, über die in WPF immer wieder gesprochen wird. Vielen Dank! – evilfred