C# WPF属性值与绑定值不同

C# WPF属性值与绑定值不同,c#,wpf,multithreading,C#,Wpf,Multithreading,我有一个复选框,其IsEnabled属性绑定到其数据上下文的只读属性。但结果并非总是如预期的那样。实际上,该属性是在视图模型的构造函数中的任务(线程)中计算的 我的印象是,计算值在某种程度上有所不同,但在snoop上检查时,它将复选框的IsEnabled属性显示为False,并在数据上下文选项卡中显示该属性为True 我相信这是由于线程,并且每当视图在完成线程执行之前加载时,它都会显示错误的值 以前我用它来装订 IsEnabled="{Binding IsFeatureAvailable}"

我有一个复选框,其IsEnabled属性绑定到其数据上下文的只读属性。但结果并非总是如预期的那样。实际上,该属性是在视图模型的构造函数中的任务(线程)中计算的

我的印象是,计算值在某种程度上有所不同,但在snoop上检查时,它将复选框的IsEnabled属性显示为False,并在数据上下文选项卡中显示该属性为True

我相信这是由于线程,并且每当视图在完成线程执行之前加载时,它都会显示错误的值

以前我用它来装订

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:如果您的问题已经解决,请记住接受答案: