c# - 在 C# WPF 中为 MVVM 数据绑定(bind)定义属性的简洁方法

标签 c# wpf mvvm data-binding

在 C# WPF 中是否有一种简洁的方法来定义 ViewModel 中的数据绑定(bind)属性?下面的属性定义非常冗长,尤其是当有很多属性时:

private bool mSomeProperty;

public bool SomeProperty
{
    get { return this.mSomeProperty; }
    set
    {
        if (value != this.mSomeProperty)
        {
            this.mSomeProperty = value;
            OnPropertyChanged(new PropertyChangedEventArgs("SomeProperty"));
        }
    }
}

最佳答案

在 C# 中,我喜欢创建一个基类并在其上放置一些辅助方法。然后我让我的 ViewModels 从它继承。这是内存中的,但它是这样的:

public class Observable : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    protected void SetProperty<T>(ref T backingField, T newValue,
        string propertyName)
    {
        if (Equals(backingField, newValue))
            return;
        backingField = newValue;
        if (PropertyChanged != null)
        {
            PropertyChanged(this,
                new PropertyChangedEventArgs(propertyName));
        }
    }
}

并且,在使用中:

public class MyClass : Observable
{
    private bool m_someProperty;

    public bool SomeProperty
    {
        get { return m_someProperty; }
        set { SetProperty(ref m_someProperty, value, "SomeProperty"); }
    }
}

关于c# - 在 C# WPF 中为 MVVM 数据绑定(bind)定义属性的简洁方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1348280/

相关文章:

c# - 重新加载后,Jquery 定位器正在查找错误的页面

c# - XamlReader.Parse 在空字符串上引发异常

c# - MVVM 我是否正确地实现了这个

html - 剑道网格,数据列中的模板不起作用

c# - 将子进程的输出(stdout、stderr)重定向到 Visual Studio 中的输出窗口

C# 丢失嵌套列表中的值

wpf - ImageSource 上的转换器 - 将图像转换为灰度

.net - 如何减少 WPF 应用程序的内存使用量

c# - 保存文件对话框 - 路径无效

silverlight - Silverlight 中的类型化数据模板