2009-04-20 14 views
1

Gibt es eine saubere und/oder akzeptierte Standardmethode, um von einem IValueConverter auf das ViewModel zurückzugelangen, oder bricht dies das MVVM-Muster? Grundsätzlich möchte ich gebundene Daten in der Benutzeroberfläche basierend auf anderen Eigenschaften des ViewModel konvertieren. Ich denke, das ist die gleiche Frage, wie Sie auf das Fenster/die Seite von einem IValueConverter verweisen, da ein Verweis auf das Steuerelement nicht an die Convert/ConvertBack-Methoden übergeben wird.Einen Verweis auf das ViewModel von einem IValueConverter erhalten

Antwort

2

Ich würde vorschlagen, dem ViewModel eine neue Eigenschaft hinzuzufügen, die die anderen Eigenschaften im ViewModel verkettet oder kombiniert. Dies beseitigt die Notwendigkeit für eine IValueConverter alle zusammen.

Auschecken this Diskussion auf IValueConverters bei Verwendung von MVVM.

+1

+1 Konverter können weitgehend abgeschafft werden, wenn MVVM praktiziert wird. Dadurch erhalten Sie einen saubereren und verständlicheren Code. –

0

Immer wenn ich das seltene Szenario habe, wenn ich mehrere Eigenschaften von einem ViewModel in einem Konverter verwenden muss, überlasse ich einfach das gesamte Ansichtsmodell als die Eingabe, ala;

<Textbox Text="{Binding, Converter={StaticResource WholeObjectConverter}"/> 

Soweit eine Referenz auf das Fenster/Seite/Ansicht bekommen, die die Umwandlung aufgerufen ist keine gute Idee, da dies sicherlich das MVVM Muster bricht. Die Idee besteht darin, dass Ihre Ansichten und Daten separate Entitäten sind und sich gegenseitig nicht kennen sollten.

Wenn Sie es wirklich hacken wollten, könnten Sie wahrscheinlich clever werden und die gewünschten Verweise (entweder ViewModel oder View) als ConverterParameter-Teil der Bindung übergeben.

Verwandte Themen