在方法结束之前更新数据绑定

时间:2013-02-27 08:46:45

标签: wpf c#-4.0 data-binding mvvm

我真的很喜欢在stackoverflow.com上阅读解决方案。现在我有一个问题,我找不到一个asnwer。我们走了: - )

我在代码中使用了两个第三方组件。一个是Extenden WPF工具包的繁忙指标。参见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));
        }

    }

}

正如您所看到的,“Working”属性已更改,WPF视图中的绑定应该可以解决。但它什么都没发生。我想这种情况会发生,因为视图的更新发生在方法结束后。但到那时工作是错误的。我也知道我可以在调用方法中设置属性并使HasChildren()被调用异步,但这将包括changig其他第三方组件。你知道如何做到这一点吗?

由于 扬

0 个答案:

没有答案