2009-07-16 14 views
2

Ich habe ein Kombinationsfeld, das mit einer ObservableCollection von Elementen verbunden ist. Ich hätte gerne ein standardmäßig ausgewähltes Element, das (None) ist, das den Wert der Eigenschaft, die ich an "SelectedValue" gebunden habe, auf null setzt.Artikel an DataBound ItemsControl in WPF anhängen

Ich denke, es sollte eine Möglichkeit geben, dies mit einer Kombination von Style/DataTemplate/TemplateSelector zu erreichen. Ich versuche, dies mit MVVM zu entwerfen, also möchte ich etwas, das nicht Codebehind verwendet und ist so wiederverwendbar wie möglich. Ich möchte auch, dass die Vorteile der ObservableCollection (Aktualisierung der Sammlung, die das Steuerelement erneut binden) intakt bleiben.

Bonus Teil B: Ich wäre auch in der Lage, ein zusätzliches visuelles Element an der Unterseite eines ItemsControl ebenso anzuhängen. Ich dachte, es wäre einfach, das DataTemplate zu ändern, wenn ich wüsste, wie man es auf dem letzten Element einer Sammlung auslöst. Bereit, andere Optionen hier zu unterhalten.

Antwort

1

Der einfachste Weg, den ich gefunden habe, ist, einen "speziellen" Wert in die zugrunde liegende Sammlung einzufügen und den "(None)" Text anzuzeigen, wenn er ausgewählt ist. Offensichtlich müssen Sie dann Ihre Bindung über einen Konverter ausführen, um diesen Wert zu berücksichtigen, und bei Auswahl Null zurückgeben. (Siehe this question von mir, die ein Ergebnis von mir war mit einem echten Nullwert zu einer zugrunde liegenden Sammlung ComboBox hinzuzufügen.)

gesagt hat, dass es tatsächlich möglich sein könnte, zu tun, was Sie mit der CompositeCollection Klasse wollen. Sie können eine separate Sammlung erstellen (mit nur einem Element - Ihrem Null-Element) und Ihre ComboBox über die CompositeCollection an diese und Ihre ursprüngliche Sammlung binden.

+0

Ich habe das versucht. Ich bin nicht viel Glück beim Binden einer CollectionContainer "Collection" -Eigenschaft an eine Eigenschaft aus dem Objekt in DataContext (ex. ). Funktioniert gut aus einer statischen Ressource aber ... vermisse ich hier etwas? –

Verwandte Themen