Ich habe ein WPF ListBox
Steuerelement und ich setze auf eine Sammlung von Objektelementen. Wie kann ich die IsSelected
-Eigenschaft der ListBoxItem
an eine Selected
-Eigenschaft eines entsprechenden Objekt Objekts binden, ohne dass eine Instanz des Objekts als Binding.Source
festgelegt werden?Verbinde die IsSelected-Eigenschaft von ListBoxItem mit einer Eigenschaft des Objekts aus der Quelle
Q
Verbinde die IsSelected-Eigenschaft von ListBoxItem mit einer Eigenschaft des Objekts aus der Quelle
17
A
Antwort
34
Nur ItemContainerStyle außer Kraft setzen:
<ListBox ItemsSource="...">
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="IsSelected" Value="{Binding Selected}"/>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
Oh, übrigens, ich glaube, Sie diese wunderbare Artikel von dr.WPF möchten: ItemsControl: A to Z.
Hoffe, das hilft.
2
Ich war auf der Suche nach einer Lösung im Code, also hier ist die Übersetzung davon.
System.Windows.Controls.ListBox innerListBox = new System.Windows.Controls.ListBox();
//The source is a collection of my item objects.
innerListBox.ItemsSource = this.Manager.ItemManagers;
//Create a binding that we will add to a setter
System.Windows.Data.Binding binding = new System.Windows.Data.Binding();
//The path to the property on your object
binding.Path = new System.Windows.PropertyPath("Selected");
//I was in need of two way binding
binding.Mode = System.Windows.Data.BindingMode.TwoWay;
//Create a setter that we will add to a style
System.Windows.Setter setter = new System.Windows.Setter();
//The IsSelected DP is the property of interest on the ListBoxItem
setter.Property = System.Windows.Controls.ListBoxItem.IsSelectedProperty;
setter.Value = binding;
//Create a style
System.Windows.Style style = new System.Windows.Style();
style.TargetType = typeof(System.Windows.Controls.ListBoxItem);
style.Setters.Add(setter);
//Overwrite the current ItemContainerStyle of the ListBox with the new style
innerListBox.ItemContainerStyle = style;
+3
Hallo BrandonS, Vielleicht funktionieren beide Lösungen gut, aber wenn möglich, bevorzugen Sie XML deklarativen Ansatz, um UI-Verhalten zu definieren. Auf diese Weise können mehr Leute (Interaktionsentwickler usw.) es verstehen und leicht modifizieren. Grüße, – wacdany
Verwandte Themen
- 1. Übergabe des gesamten Objekts gegen die Eigenschaft des Objekts
- 2. InvalidCastException aus ListBoxItem des Inhalt
- 3. Eigenschaft auf dem Prototyp überschreibt die Eigenschaft des tatsächlichen Objekts?
- 4. Aufruf des Property-Objekts aus der Klasse?
- 5. Callback-Objekts und Eigenschaft des Objekts Rückkehr nicht wie erwartet
- 6. ListBoxItem aus ViewModel entfernen
- 7. Get Eigenschaft des Objekts in JavaScript
- 8. Ermitteln der ListboxItem-Position in einer Zeichenfläche?
- 9. Datenraster des Objekts aus der Liste erstellen
- 10. Rückgabe des Objekts, von dem etwas eine Eigenschaft ist?
- 11. UI-Select2 Bindung an Objekt anstelle der Eigenschaft des Objekts
- 12. Aufruf der Methode des Objekts des Objekts mit call_user_func
- 13. Eigenschaft des verwalteten Objekts wird nach dem Zusammenführen der Kontexte des verwalteten Objekts zu null
- 14. Abfragen für Objekt basierend auf der Eigenschaft des Inside-Objekts
- 15. Erhalte die Eigenschaft eines Objekts
- 16. Sollte Rest Eigenschaft des Objekts Bindemuster sein die letzte
- 17. Serialize komplexe Eigenschaft des Objekts als Skalarwert
- 18. Get NSMutableArray -Index abhängig von der Eigenschaft eines Objekts?
- 19. nur einer der Parameter des Objekts geschrieben
- 20. Holen Sie sich die Liste der Eigenschaft des Objekts aus der Liste der Objekte dynamisch in Java
- 21. VisualPHPUnit - Versuch, die Eigenschaft von Nichtobjekt zu erhalten, wenn eine Eigenschaft des Objekts
- 22. Das Ändern des Objekts wirkt sich auf frühere Versionen des Objekts in einer Foreach-Schleife aus
- 23. wpf Rahmenkontrolle über die Breite von ListboxItem
- 24. Wie ermittele ich die Quelle des SelectionChangedEvent
- 25. Füllen der Quelle @Wert während des Komponententests
- 26. ListBoxItem-Auswahl auf MouseLeftButtonUp
- 27. Bindung an eine Eigenschaft eines Objekts
- 28. Ermitteln des Verschlüsselungsalgorithmus aus der Quelle und der resultierenden Zeichenfolge
- 29. Festlegen des Tag-Members eines ListBoxItem in einer Datatemplate?
- 30. Verbinde ein Signal mit einer gebundenen Methode
Dies ist genau das, was ich gesucht habe. Vielen Dank. – BrandonS
Leider funktioniert dies nicht mit WinRT, da [Bindungen auf Setter nicht unterstützt werden] (http://stackoverflow.com/a/11869065/641833). – Trisped