我试图找出MVVM和WPF,我想测试一些简单的代码来解决它。
之前我已经这样做了,所以我认为这不会成为一个问题,但我已经失去了理智。
这不是完整的代码,但我已经针对特定问题对其进行了调整
我有一个模特
private string _btnName;
public string BtnName { get {return _btnName;} set{ _btnName = value; } }
我的视图模型就像这样
BtnName {get { return model.BtnName;} set{ model.BtnName = value;}}
ICommand ChangeButtonName = new RelayCommand(ChangeName)
Public void ChangeName(object a){ BtnName = "test"; }
像这样的观点
<Button Content={Binding MV.BtnName} Command={Binding MV.ChangeButtonName}/>
MV
是我的 ViewModel 类,而model
是我的模型类。
当我点击按钮时,它会进入我的功能,并确实&#34;更改&#34;名称,但在视图上按钮仍将具有旧内容。这意味着它没有更新。
我不明白为什么。
答案 0 :(得分:5)
您必须在ViewModel中实现INotifyPropertyChanged
。
public class MainViewModel : INotifyPropertyChanged
{
public RelayCommand DoSomethingCommand { get; set; }
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
}
您必须更改您的属性,以便在更新属性时通知您的View。
private string _btnName;
public string BtnName { get { return _btnName; } set { _btnName = value; OnPropertyChanged("BtnName"); } }