新しいスレッドを開始しており、ビューモデルで定義されているプロパティを使用してUI要素を更新しようとしていますが、エラーなしで実行できますが、UI要素をコードビハインドで更新しようとすると、アクセスエラー(「別のスレッドが所有しているため、呼び出し元のスレッドはこのオブジェクトにアクセスできません」)。最初の質問は.. 2つのアプローチの違いは何ですか? 2番目の質問は、ViewModelでDisptacherを理想的に使用するときでしょうか?ボタン上のICommandプロパティを通じて呼び出されMVVM WPFでMVVM paternにディスパッチャは不要ですか?
private void Button_Click(object sender, RoutedEventArgs e)
{
Thread th = new Thread(new ThreadStart(delegate()
{
textbox.Text = "Rajib";
}
));
th.Start();
}
//inside XAML
<TextBox x:Name="textbox" Text="{Binding UserInput, Mode=TwoWay}" />
の後ろ
コード public string UserInput
{
get { return _UserInput; }
set { _UserInput = value; OnPropertyChanged("UserInput"); }
}
public string UserInput
{
get { return _UserInput; }
set { _UserInput = value; OnPropertyChanged("UserInput"); }
}
// ます。public void ExecuteCommand(オブジェクトobj) { InvokeCallThroughAnonymousDelegateThread()をクリックしてください。 }
private void InvokeCallThroughAnonymousDelegateThread()
{
ThreadStart start = delegate()
{
UserInput = "Calling from diff thread";
};
new Thread(start).Start();
}