C#RaisePropertyChanging?

Ray*_*rof 3 c# wpf mvvm

在通知视图fx时,我不确定为什么我应该使用RaisePropertyChanging:

 private LoggingLvl _myLoggingLvl;
    public LoggingLvl MyLoggingLvl
    {
        get { return _myLoggingLvl; }
        set
        {
            RaisePropertyChanging("MyLoggingLvl");
            _myLoggingLvl = value;
            RaisePropertyChanged("MyLoggingLvl");
        }
    }
Run Code Online (Sandbox Code Playgroud)

为什么建议使用RaisePropertyChanging

Dan*_*zey 7

在应用更改之前,使用INotifyPropertyChanging将允许消费代码有机会消耗属性的先前值.这通常不会有用,但有些情况可能是:如果您想象一个表示"活动对象"的属性,则此事件将允许您触发在取消激活对象时将触发的代码.

作为一个人为的例子,考虑一个UI,其中需要以特定方式显示字段值的变化:旧值应该从屏幕"浮动",留下新值.如果实现了模型类INotifyPropertyChanging,则viewmodel类可以附加到此事件,以便缓存值以在float动画中使用.这允许模型类表示当前状态,而viewmodel可以维护驱动UI所需的所有值.