我有一个wpf项目,我在一个绑定到文本框的属性上使用INotifyPropertyChanged。我正在使用任务(TaskParallelLibrary)在不同线程上更新此值。它被正确更新并且不会抛出异常。我以为它会抛出一个异常,因为它运行在后台线程而不是UI线程。当然,如果我直接使用UI元素,它会抛出异常。那么,INotifyPropertyChanged绑定机制是否会自动调度到UI线程?任务并行库INotifyPropertyChanged不抛出异常?
这是我的代码与属性。
private string _textProperty = "";
public string TextProperty
{
get
{
return _textProperty;
}
set
{
if (_textProperty != value)
{
_textProperty = value;
NotifyPropertyChanged("TextProperty");
}
}
}
,我的任务是创造
var task = new Task(() =>
{
TextProperty = "ABCD"; // Works.
// txtBox.Text = "ABCD"; // Throws an exception.
});
task.Start();
和XAML的文本框为<TextBox Name="txtBox" Text="{Binding TextProperty}"/>
+1。有趣的链接到WPF 4.5。看起来他们已经整理了一些我不喜欢WPF的东西。 – RichardOD
@Reed你有参考吗?wpf如何为你整理更新? –