Gibt Es Eine Möglichkeit, Zu Konvertieren, Die Mitglieder Einer Collection Als Eine ItemsSource?
In WPF können Sie eine IValueConverter oder IMultiValueConverter konvertieren von Daten-gebunden-Wert von sagen wir einem int
zu einem Color.
Habe ich eine Sammlung von Modell-Objekten, die ich gerne konvertieren, um Ihre ViewModel-Darstellungen, sondern in diesem Szenario
<ListBox ItemsSource="{Binding ModelItems,
Converter={StaticResource ModelToViewModelConverter}" />
den Konverter geschrieben werden soll, konvertieren Sie die gesamte Sammlung ModelItems
auf einmal.
Ich konvertieren möchten, die Elemente der Kollektion einzeln, gibt es eine Möglichkeit, das zu tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht die Konverter auf die Sammlung selbst, denn es würde die Sammlung als Eingabe. Sie haben zwei Möglichkeiten:
Wenn Sie möchten, verwenden Sie den zweiten Ansatz, dann verwenden Sie etwas wie dieses:
Wenn Sie nicht brauchen, eine benutzerdefinierte datatemplate, dann können Sie überspringen die ContentTemplate Attribut.
Ja, Sie können. Es ist, handeln die gleiche wie bei der IValueConverter. Sie einfach behandeln Sie den Wert der parameter für die Convert-Methode als eine Sammlung.
Hier ist ein Beispiel-Konverter für eine Sammlung:
In diesem Fall ist nur ein proof-of-concept, aber ich denke, es sollte zeigen, die Idee sehr gut.
Der Konverter konvertiert von einer einfachen Auflistung von Zeichenfolgen wie diese:
in eine Sammlung von Ganzzahlen entsprechend der Zeichenfolge Bedeutung.
Und hier ist der dazugehörige XAML-Code (loc ist die Referenz auf die aktuelle assembly, wo ist der Konverter):
Wenn Sie möchten, um eine zwei-Wege Bindung, die Sie umsetzen müssen, auch wieder zurück konvertieren. Aus der Erfahrung in der Arbeit mit MVVM, schlage ich vor, etwas zu verwenden, wie das Factory-Muster zu transformieren vom Modell im ViewModel und rückwärts.
Hier ist ein weiteres Beispiel. Ich bin mit MVVM Caliburn Micro. MyObjects ist eine Liste von enums in meinem Fall.