View, ViewModel 및 사용자 정의 유형 클래스가있는 간단한 시나리오가 있습니다. 내가 바인딩 된 텍스트 상자를 내보기에서MVVM 모델 - ViewModel 통신
private Model.Person person;
public Model.Person Person
{
get
{
return person;
}
set
{
this.person= value;
this.RaisePropertyChanged("Person");
this.SavePersonCommand.OnCanExecuteChanged();
}
}
: 나는 사람 속성이
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;
}
뷰 모델에서 :
모델 클래스
은 같은 것입니다 Person.name따라서 ViewModel이 se를 실행하지 않습니다. t 메서드인데, 이는 Person 개체가 여전히 동일하기 때문에 ... 모델 속성에서 set 메서드를 실행하고 있기 때문입니다.
사용자가 사람 이름을 변경하고 다른 방법 (웹 서비스 및 기타 자료 검색 ...)으로 전화를 걸려면이 기능이 ViewModel에 있어야한다고 생각합니다.
MVVM Light 툴킷의 Messenger를 사용하여 여러 뷰 모델 간 및 뷰와 뷰 모델 간 통신을하고 있습니다.
중재자를 사용해야하는지, 아니면이를 해결할 다른 방법을 알아야할지 모르겠다.
보인다. 유효성 검사/INotifyPropertyChanged 등을 구현하는 것을 볼 수 있습니다. 어쩌면 Csla.Net을 체크 아웃하고 싶을 것입니다. 훌륭한 모델을 만들 수있는 프레임 워크를 제공 할뿐만 아니라 지원하는 다양한 UI (기본적으로 모든 UI)에 대한 도움을 제공합니다. http://www.lhotka.net/cslanet/ – Andy
제안 해 주셔서 감사합니다 .- – zapico