0

过去我真的很喜欢在 stackoverflow.com 上阅读解决方案。现在我有一个我找不到答案的问题。开始了 :-)

我在我的代码中使用了两个 3rd 方组件。一个是来自 Extenden WPF Toolkit 的繁忙指示器。请参阅 XAML。

<tool:BusyIndicator IsBusy="{Binding RequirementsModel.Working}" BusyContent="Fetching Data..." >
    <local:RequirementsTree Model="{Binding RequirementsModel}" x:Name="Sample" />
</tool:BusyIndicator>

IsBusy 绑定到RequirementsModel.Working。RequirementsModel 是 DataContext 附带的我的视图模型的一部分。让我们看一下我的RequirementsModel 的摘录。

  class RequirementsModel : ITreeModel, INotifyPropertyChanged
  {

        private bool _working;
        public bool Working
        {
            get { return _working; }
            set { _working = value; RaisePropertyChanged("Working"); }
        }



        public bool HasChildren(object parent)
        {
            Working = true;

            /* Data access shall happen here
                Entered dummy code  */

            System.Threading.Thread.Sleep(2000);

            bool value = true;

            Working = false;

            return value;

        }


        public event PropertyChangedEventHandler PropertyChanged;

        public void RaisePropertyChanged(string propertyName)
        {
            PropertyChangedEventHandler handler = PropertyChanged;
            if (handler != null)
                handler(this, new PropertyChangedEventArgs(propertyName));
        }

    }

}

如您所见,“工作”属性已更改,并且 WPF 视图中的绑定应该可以正常工作。但它什么也没发生。我猜这种情况的发生是因为视图的更新发生在方法结束之后。但是到那时工作又是错误的。我也知道我可以在调用方法中设置属性并使 HasChildren() 被异步调用,但这将包括更改其他 3rd 方组件。你知道如何让它工作吗?

谢谢简

4

0 回答 0