检测OnPropertyChanged何时发生

时间:2016-07-18 19:03:21

标签: wpf xaml mvvm mvvm-light propertychanged

以下是我需要的简化示例:
我有A类,有一个属性Name。 Name属性是异步更改的,无法知道修改何时发生 为了在视图中显示它的更新值,我在其中连接了propertychanged事件并将其与{Binding A.Name}绑定。在VM中,它工作正常 但在我的情况下,有很多自定义属性不应该在A类中。我在A类中提出propertychanged时会想到Name属性应该通知AViewModel并提升OnPropertyChanged

有没有办法这样做?

C#:

public class A : BaseViewModel
{
    string name;
    public string Name
    {
        get { return name; }
        set { Set(()=> Name, ref name, value); }
    }
}

public class AViewModel : BaseViewModel
{
    A a;
    public A A 
    {
        get { return a; }
        set { Set(()=> A, ref a, value); }
    }
    public string Name
    {
        get { return A.Name; }
        set { Set(()=> Name, ref A.Name, value); }
    }
}

XAML:

<TextBox Text="{Binding Name}" />

2 个答案:

答案 0 :(得分:2)

尝试将“RaisePropertyChanged”添加到Name对象:

   string name;
    public string Name
    {
        get { return name; }
        set { Set(()=> Name, ref name, value); RaisePropertyChanged();}
    }

然后在Xaml上包含更新触发器:

<TextBox Text="{Binding Name}" UpdateSourceTrigger=PropertyChanged />

答案 1 :(得分:1)

例如,A类必须有一个经典的C#事件,因此AViewModel可以订阅它。