【问题标题】:MVVM: Trigger method on property changed with Fody.PropertyChangedMVVM:使用 Fody.PropertyChanged 更改属性的触发方法
【发布时间】:2016-02-18 10:47:53
【问题描述】:

我想在属性更改时运行一个方法。我希望我的代码编译成这样的:

public string Property
    {
        get { return _property; }
        set
        {
            _property= value;
            IWantToCallFromHere(); // I want to inject this call
            NotifyPropertyChanged();
        }
    }

【问题讨论】:

  • 此代码必须由来自public string Property { get; set; }的foddy生成
  • 我刚读到关于 Fody 的文章。让我帮助理解它。如果我们只是用get set编写公共属性,那么编译器会自动为我们生成代码吗?如果我想在我的 Set 属性中执行任何逻辑,那么我将在哪里使用 Fody 编写?我们可以编辑 Fody 自动生成的代码吗?

标签: c# mvvm inotifypropertychanged fody-propertychanged


【解决方案1】:

这在 Wiki 中名为 On_PropertyName_Changed 的页面中有所描述。

本质上你添加了一个命名约定为private void OnYourPropertyNameChanged()的方法

您想要实现的完整示例如下:

public string Property
{
    get; set;
}

private void OnPropertyChanged()
{
    IWantToCallFromHere();
}

被翻译成

private string _property;
public string Property
{
    get => _property; 
    set
    {
        if(_property != value)
        {
            _property = value;
            OnPropertyChanged();
            NotifyPropertyChanged();
        }
    }
}

private void OnPropertyChanged()
{
    IWantToCallFromHere();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-10
    • 2013-02-22
    • 2020-04-05
    • 2011-01-23
    • 1970-01-01
    • 2010-11-04
    • 1970-01-01
    • 2019-08-17
    相关资源
    最近更新 更多