C# WPF属性值与绑定值不同
我有一个复选框,其IsEnabled属性绑定到其数据上下文的只读属性。但结果并非总是如预期的那样。实际上,该属性是在视图模型的构造函数中的任务(线程)中计算的 我的印象是,计算值在某种程度上有所不同,但在snoop上检查时,它将复选框的IsEnabled属性显示为False,并在数据上下文选项卡中显示该属性为True 我相信这是由于线程,并且每当视图在完成线程执行之前加载时,它都会显示错误的值 以前我用它来装订C# WPF属性值与绑定值不同,c#,wpf,multithreading,C#,Wpf,Multithreading,我有一个复选框,其IsEnabled属性绑定到其数据上下文的只读属性。但结果并非总是如预期的那样。实际上,该属性是在视图模型的构造函数中的任务(线程)中计算的 我的印象是,计算值在某种程度上有所不同,但在snoop上检查时,它将复选框的IsEnabled属性显示为False,并在数据上下文选项卡中显示该属性为True 我相信这是由于线程,并且每当视图在完成线程执行之前加载时,它都会显示错误的值 以前我用它来装订 IsEnabled="{Binding IsFeatureAvailable}"
IsEnabled="{Binding IsFeatureAvailable}"
后来为了解决这个问题,我用了这个
IsEnabled="{Binding IsFeatureAvailable, UpdateSourceTrigger=PropertyChanged}"
但是没有变化,没有任何建议
我正在使用框架版本4.5.2和Caliburn micro for MVVM您应该实现
INotifyPropertyChanged
接口,并在IsFeatureAvailable
属性设置为新值时引发PropertyChanged
事件:
public class ViewModel : PropertyChangedBase
{
private _isFeatureAvailable;
public bool IsFeatureAvailable
{
get { return _isFeatureAvailable; }
set
{
_isFeatureAvailable = value;
NotifyOfPropertyChange(() => IsFeatureAvailable);
}
}
}
您是否正在实现INotifyPropertyChanged接口?如何设置源属性?如果使用多线程,那么考虑使用<代码>分派器< /代码>,并在UI线程上触发通知。我遇到通知不显示的问题,只是因为我没有通过Dispatcher调用OnPropertyChanged。@MegaMind:如果您的问题已经解决,请记住接受答案: