我有一个WPF项目,在其中我使用了INotifyPropertyChanged接口来绑定到文本框的属性。我使用任务(TaskParallelLibrary)在不同的线程上更新这个值。它被正确地更新且不会抛出异常。虽然它在后台线程上运行而不是UI线程上,但我原以为它会抛出异常。当然,如果我直接使用UI元素,它就会抛出异常。所以,INotifyPropertyChanged的绑定机制是否会自动处理转发到UI线程?
这里是我的代码和属性。
这里是我的代码和属性。
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}"/>