从事件更新视图模型 - 属性更改事件处理程序为空



我的 WPF 应用中有一个属性,我正在尝试将其绑定到 UI。 当我直接在视图模型中更新属性时,它按预期工作。 但是,当我尝试使用 Event 从另一个类内部更新此属性时,绑定似乎不起作用。 在仔细检查下,我认为这种情况正在发生,因为发生这种情况时 PropertyChangedEventHandler 为空。

我在视图模型中的属性:

public int BeatNumber
        {
            get
            {
                return beatNumber;
            }
            set
            {
                if (beatNumber != value)
                {
                    this.beatNumber = value;
                    RaisePropertyChanged(() => BeatNumber);
                }
            }
        }

视图模型内的事件:

public event EventHandler GetHtmlDone = delegate { };

public void GetHTML(string url)
{
    BeatNumber++;
}

通知对象:

public class NotificationObject : INotifyPropertyChanged
    {
        protected void RaisePropertyChanged<T>(Expression<Func<T>> action)
        {
            var propertyName = GetPropertyName(action);
            RaisePropertyChanged(propertyName);
        }
        private static string GetPropertyName<T>(Expression<Func<T>> action)
        {
            var expression = (MemberExpression)action.Body;
            var propertyName = expression.Member.Name;
            return propertyName;
        }
        private void RaisePropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }

        public event PropertyChangedEventHandler PropertyChanged;
    }

如何让此绑定在从另一个类调用我的事件时更新?

通过使用命令而不是从事件调用方法来解决它。

有关更多信息,请参阅 ICommand 接口

最新更新