MVVM-Model zum ViewModel-Kommunikation

Habe ich ein einfaches Szenario mit einem View, ViewModel und einen benutzerdefinierten Typ Klasse.

Die model-Klasse ist so etwas wie:

public class Person : Validation.DataError, INotifyPropertyChanged
{
    #region INotifyProperty

    public event PropertyChangedEventHandler PropertyChanged;

    public void RaisePropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }
    #endregion


    public global::System.String name
    {
        get
        {
            return _name;
        }
        set
        {
            _name= value;
            RaisePropertyChanged("name");
        }
    }
    private global::System.String _name;

}

Im ViewModel habe ich eine Person-Eigenschaft:

private Model.Person person;

        public Model.Person Person
        {
            get
            {
                return person;
            }
            set 
            {
                this.person= value;

                this.RaisePropertyChanged("Person");
                this.SavePersonCommand.OnCanExecuteChanged();
            }
        }

In meiner View habe ich ein Textfeld gebunden ist, zu Person.name

Also das ViewModel ist nicht die Ausführung der set-Methode da das Person-Objekt ist immer noch das gleiche... es ist die Ausführung der set-Methode in der Modell-Eigenschaft.

Ich soll der Benutzer ändern, der name der person und machen Sie einen Aufruf einer anderen Methode (Suche über einen web-service und andere Sachen...) und ich denke, diese Funktion sollte im ViewModel.

Ich bin mit der Messenger von MVVM Light toolkit für die Kommunikation zwischen verschiedenen viewmodels und zwischen views und viewmodels.

Nun weiß ich nicht, ob ich sollte ein Vermittler auch für diese, oder wenn ich weiß das ein anderer Weg, um dieses Problem zu lösen.

  • Sieht aus wie Sie gehen hinunter einem guten Weg. Ich sehe, du bist Implementierung Validierung / INotifyPropertyChanged und so Zeug. Vielleicht möchten Sie check out Csla.Net, die verarbeiten das Zeug für Sie. Es bietet einen Rahmen für die Erstellung großer Modelle, sowie bietet eine Hilfe für die verschiedenen UIs unterstützt (im Grunde alle). lhotka.net/cslanet
  • Vielen Dank für Ihren Vorschlag, ich werde einen Blick drauf werfen 😉
InformationsquelleAutor zapico | 2011-04-28
Schreibe einen Kommentar