Caliburn Micro,在更改nedsted对象中的属性时通知

时间:2019-05-14 11:41:13

标签: c# wpf data-structures data-binding caliburn.micro

我正在开发用于数据管理的C#WPF应用程序。我将MVVM模式与Caliburn Micro框架一起使用。
我有一个按钮,只有在名称不为空的特定文本框时才可以按下。


我的问题是,当我在文本框中输入文本时,CanSaveSelection不会得到通知,因此也不会检查其是否为空。

public class MainWorkspaceViewModel : PropertyChangedBase
{
    private Car _myCar;
    public Car MyCar
    {
        get { return _myCar; }
        set
        {
            _myCar = value;
            NotifyOfPropertyChange(() => CanSaveSelection);
        }
    }

    public void SaveSelection()
    {
        //Do something
    }

    public bool CanSaveSelection
    {
        get
        {
            bool result = true;

            if (String.IsNullOrWhiteSpace(MyCar.Manufacturer.Name))
            {
                result = false;
            }
            return result;
        }
    }
}

对象:

public class Car : PropertyChangedBase
{
    public Manufacturer Manufacturer { get; set; }
}

public class Manufacturer : PropertyChangedBase
{
    public String Name { get; set; }
}

是否有一种方法可以使“ NotifyOfPropertyChange”气泡化为对象? 我认为使用Event Aggregator可以做到这一点,但我对此并不了解。

1 个答案:

答案 0 :(得分:1)

您可以在视图模型中处理Manufacturer的{​​{1}}事件:

PropertyChanged