gpt4 book ai didi

c# - 我的属性(property)是否更新了我的领域,或者我是否错误地使用了 MVVM

转载 作者:太空宇宙 更新时间:2023-11-03 19:47:48 24 4
gpt4 key购买 nike

我正在尝试弄清楚 MVVM 和 WPF,我想测试一些简单的代码以掌握它。

我以前做过这个,所以我认为这不会是个问题,但我为此失去了理智。

这不是完整的代码,但我已经针对特定问题对其进行了调低

我有一个模型

private string _btnName;
public string BtnName { get {return _btnName;} set{ _btnName = value; } }

我的 View 模型是这样的

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 是我的 Model 类。

当我点击按钮时,它会进入我的功能并确实“更改”名称,但在 View 中按钮仍将具有旧内容。这意味着它不会更新。

我不明白为什么。

  • 为什么我的按钮不更新内容文本?
  • 我的 ViewModel 中应该有属性吗?

最佳答案

您必须在您的 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"); } }

关于c# - 我的属性(property)是否更新了我的领域,或者我是否错误地使用了 MVVM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43116949/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com