1
我在我的WPF应用程序中有一个属性,我试图绑定到UI。当我直接在viewmodel内更新属性时,它就像我期望的那样工作。但是,当我尝试使用事件从另一个类中更新此属性时,绑定似乎不起作用。在仔细观察下,我认为这是因为PropertyChangedEventHandler在发生这种情况时为空。从Event更新Viewmodel - 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;
}
我如何得到这个绑定更新时,我的事件从另一个班叫?
您PropertyChangedEventHandler为空它告诉也就是说,它没有被设置为按时间UI的的DataContext你提到的事件改变中的属性你的虚拟机未绑定到UI它 – Nitin
有没有什么办法可以确保ViewModel在执行任何代码之前被绑定?即。确保在构造函数中的绑定? – user547794
是的,您将虚拟机设置为datacontext在其构造函数中查看... – Nitin