我的 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 接口