gpt4 book ai didi

MVVM - PropertyChangedEventHandler

转载 作者:行者123 更新时间:2023-12-03 10:29:46 25 4
gpt4 key购买 nike

我从 MVVM 开始。

我的应用程序使用这种“模式(PM 模式——我们不要在这里讨论这个:))”并且工作正常;该项目非常简单,据说对于初学者来说很容易掌握!如果只是... :)

有一件事让我感到困惑,这可能与 MVVM 本身无关; PropertyChangedEventHandler。

我正在逐行浏览我的代码,并且可以看到调用(下面的代码),但我不确定我为什么要调用这个处理程序或它在做什么!

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.Windows.Input;

namespace drMVVM.Model
{
public class TextContent : INotifyPropertyChanged
{
private string text;
public string Text
{
get { return text; }
set
{
if (text != value)
{
text = value;
OnPropertyChanged("Text");
}
}
}

private void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}

#region INotifyPropertyChanged Members

public event PropertyChangedEventHandler PropertyChanged;

#endregion
}
}

我的 View 模型也有类似的代码布局,但不是设置属性,而是创建对象的实例并应用任何其他逻辑。

PropertyChangedEventArgs 是否仅用于更新已更改的模型的属性?如果是这样,为什么它是在模型类中实现的,而不仅仅是 ModelView?是因为它可以本能地知道是只听变化还是提供细节通知发生变化?如果它是一个通知(我假设因此是接口(interface)的名称),那么我在我的 Model 类中通知什么?

最佳答案

INotifyPropertyChanged每当您想通知某人有关您的属性的更改时,都需要。因此,如果您的 ViewModel 需要通知 View 有关更改以便 View 更新其数据绑定(bind),那么您的 ViewModel 需要实现它并在每次属性更改时引发事件。

类似地,如果您的模型具有可以更改的属性并且您希望收到通知,那么也可以在您的模型中实现它。

除非有自动化的含义,否则它并不是真正必要的;一个是 WPF 中的数据绑定(bind),它需要一个提示,所以它知道它必须更新。

关于MVVM - PropertyChangedEventHandler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11308019/

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