새 스레드를 시작하고 내 View Model에 정의 된 속성을 통해 UI 요소를 업데이트하려고하는데 오류없이 수행 할 수 있지만 코드 숨김을 통해 UI 요소를 업데이트하려고하면 알려진 UI가 throw됩니다 액세스 오류 ("다른 스레드가 소유하고 있기 때문에 호출하는 스레드가이 객체에 액세스 할 수 없습니다."). 첫 번째 질문은 .. 두 가지 접근 방식의 차이점은 무엇입니까? 두 번째 질문은 ViewModel에서 Disptacher를 사용하는 것이 가장 이상적일까요? 버튼에 ICommand의 속성을 통해 호출 MVVM WPF를 사용하는 MVVM patern에는 Dispatcher가 필요하지 않습니까?
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"); }
}
// 공공 무효 ExecuteCommand를 (객체 OBJ) { InvokeCallThroughAnonymousDelegateThread()를 클릭; }
private void InvokeCallThroughAnonymousDelegateThread()
{
ThreadStart start = delegate()
{
UserInput = "Calling from diff thread";
};
new Thread(start).Start();
}