私はUWPアプリケーションでMVVMLightを使用しています。私は2つの画面を持っています:MainScreen
2番目の画面を開くボタンがあります。 MainScreen
から2番目の画面に移動します。私は、メイン画面上のボタンをクリックして、他のビューにデータを送信する必要がUWP MvvmLight Messengerを取得した後のUIを更新します.default.Receive
Messenger.Default.Send(someobject)
と同様
Messenger.Default.Register<Some>(this, (action) => ReceiveMsg(action));
を使用しています。 問題は、データが第2画面に更新し、
アプリケーションは、私はUIを更新するには、いくつかの方法を試みた
異なるスレッドに対してマーシャリングされたインターフェイスと呼ばれる例外を発生させ得ていないです、実際にはthis、thisように私は、私は一つ一つ全て上記のセグメントを試してみました
private async void ReceiveMsg(Some action)
{
try
{
//await Task.Factory.StartNew(() => {
// T1 = action.T1;
// RaisePropertyChanged(() => T1);
//});
//SharingData.UpdateScore(action);
//DispatcherHelper.Initialize();
//await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal
// ,() =>
// {
// T1 = action.T1;
// RaisePropertyChanged(() => T1);
// });
//await Dispatcher.DispatchAsync(() =>
//{
// T1 = action.T1;
// RaisePropertyChanged(() => T1);
//},1000, Windows.UI.Core.CoreDispatcherPriority.Normal);
//await Window.Current.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,() =>
//{
// T1 = action.T1;
// RaisePropertyChanged(() => T1);
//});
//var views= Windows.ApplicationModel.Core.CoreApplication.Views.ToList()[0];
//await views.CoreWindow.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,() => {
// T1 = action.T1;
// RaisePropertyChanged(() => T1);
//});
var thiswindow = Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher;
await thiswindow.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,() =>
{
team1 = action.Team1;
this.RaisePropertyChanged("Team1");
});
//DispatcherHelper.CheckBeginInvokeOnUI(
//() =>
//{
// T1 = action.T1;
// RaisePropertyChanged(() => T1);
//});
//DispatcherHelper.Reset();
//DispatcherHelper.Initialize();
}
catch (Exception ex)
{
//DispatcherHelper.Reset();
//Console
}
}
次のようにすべてのこれらの可能性を試してみましたが、している何もWORまだ別のスレッドのマーシャリングエラーが発生しています。
私が間違っていることを教えてください。 プロパティはT1 = 'Some Value'のように更新されていますが、UIやRaisePropertyChangedには反映されず、例外が発生しています。