Wpf 在方法结束之前更新数据绑定
过去我非常喜欢在stackoverflow.com上阅读解决方案。现在我有个问题找不到答案。我们开始吧:-) 我在代码中使用了两个第三方组件。一个是ExtendenWPF工具包中的忙碌指示器。请参阅XAMLWpf 在方法结束之前更新数据绑定,wpf,c#-4.0,data-binding,mvvm,Wpf,C# 4.0,Data Binding,Mvvm,过去我非常喜欢在stackoverflow.com上阅读解决方案。现在我有个问题找不到答案。我们开始吧:-) 我在代码中使用了两个第三方组件。一个是ExtendenWPF工具包中的忙碌指示器。请参阅XAML <tool:BusyIndicator IsBusy="{Binding RequirementsModel.Working}" BusyContent="Fetching Data..." > <local:RequirementsTree Model="{Bin
<tool:BusyIndicator IsBusy="{Binding RequirementsModel.Working}" BusyContent="Fetching Data..." >
<local:RequirementsTree Model="{Binding RequirementsModel}" x:Name="Sample" />
</tool:BusyIndicator>
正如您所看到的,属性“Working”被更改,WPF视图中的绑定应该可以正常工作。但它什么也没发生。我猜出现这种情况是因为视图的更新发生在方法结束之后。但到那时,工作还是假的。我还知道我可以在调用方法中设置属性,并使haschilds()被异步调用,但这将包括另一个第三方组件。你知道怎么做吗
谢谢
Jan用户界面的更新发生在执行工作的同一个线程上,这是正确的,您必须将该工作转移到另一个线程。但是如何做到这一点呢?正如我提到的,我需要让它在我的模型中工作。我对任何想法都持开放态度:-)我发现haschilds()方法是由另一个XAML文件中的数据绑定触发的。如何在单独的线程中启动数据绑定的操作?好的,我找到了一个解决方案。我确实改变了控制。现在还有其他问题。。。
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));
}
}
}