WPF属性值与绑定值不同

时间:2017-10-20 10:05:31

标签: c# wpf multithreading

我有一个复选框,其IsEnabled属性绑定到其数据上下文的只读属性。但结果并不像预期的那样。实际上,该属性是在视图模型的构造函数

中的任务(线程)中计算的

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

我认为这是由于线程化,每当视图在完成线程执行之前加载时,它就会显示错误的值。

以前我用它来绑定

IsEnabled="{Binding IsFeatureAvailable}"

后来为了解决这个问题,我使用了这个

IsEnabled="{Binding IsFeatureAvailable, UpdateSourceTrigger=PropertyChanged}"

但没有任何变化,任何建议

我正在使用Framework版本4.5.2和Caliburn micro for MVVM

1 个答案:

答案 0 :(得分:2)

您应该实施INotifyPropertyChanged界面并在PropertyChanged属性设置为新值时提升IsFeatureAvailable事件:

public class ViewModel : PropertyChangedBase
{
    private _isFeatureAvailable;
        public bool IsFeatureAvailable
    {
        get { return _isFeatureAvailable; }
        set
        {
            _isFeatureAvailable = value;
            NotifyOfPropertyChange(() => IsFeatureAvailable);
        }
    }
}