我真的很喜欢在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其他第三方组件。你知道如何做到这一点吗?
由于 扬