ViewModel에서 속성을 업데이트하는 올바른 방법 나는 WPF 꽤 초심자입니다. 모델에서 데이터가 변경되면 뷰 모델에이를 알리고 뷰는 뷰 모델에서 속성과 사물에 모두 바인딩됩니다. 이 올바른지? 나는 모델이모델에서
public class LoginModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public void NotifyPropertyChanged(string propName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propName));
}
public bool Authenticated { get; set; }
}
같은 내 뷰 모델에 뭔가를 INotifyPropertyChanged
을 구현하고 보이는 것을 읽어 봤는데 그렇다면, 나는 "모델 속성에서 업데이트를 받아야하는, 속성"AuthResult "가 인증 됨 "
public partial class view1 : UserControl, INotifyPropertyChanged{
public bool AuthResult
{
get
{
return _authVal;
}
set
{
_authVal = value;
NotifyPropertyChanged("AuthResult");
}
}
public event PropertyChangedEventHandler PropertyChanged;
public void NotifyPropertyChanged(string propName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propName));
}
}
이 현재 구현이 잘못되었다는 것을 알고 있습니다. 나는 그렇게처럼 내 모델에서하여 PropertyChanged 알림에 가입해야 함을 발견했습니다은 "AuthResult"속성을 업데이트해야합니다 어디 표시되지 않습니다
LoginModel.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(LoginModel_PropertyChanged);
void LoginModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
if(e.PropertyName == "Authenticated")
{
//do something
}
}
. If 문에서 AuthResult = _model.Authenticated;
같은 것을할까요?
편집 :
내 생성자에?
LoginModel _model;
public view1(LoginModel model)
{
_model = model;
InitializeComponent();
}
이 답변은 궁극적으로 다시 내 질문에 대답, 감사합니다 mm8. – ganjeii
두 번째 옵션은 MVVM이 아니며 "Facade"입니다. – Fabio