こんにちは、最初の投稿から 8 か月が経過しているため、手遅れかもしれません... Silverlight mvvm アプリケーションで同じ問題が発生しました。そして、私はこのような私の解決策を見つけました。私が持っているモデルとビューモデルごとに、コントローラーと呼ばれるクラスもあります。そのように
public class MainView : UserControl // (because it is a silverlight user controll)
public class MainViewModel
public class MainController
私の MainController は、モデルとビューモデル間のコマンドと接続を担当しています。コンストラクターで、ビューとそのビューモデルをインスタンス化し、ビューのデータコンテキストをそのビューモデルに設定します。
mMainView = new MainView();
mMainViewModel = new MainViewModel();
mMainView.DataContext = mMainViewModel;
//(私の命名規則では、メンバー変数に接頭辞 m を付けています)
MainView の型にパブリック プロパティもあります。そのように
public MainView View { get { return mMainView; } }
(この mMainView はパブリック プロパティのローカル変数です)
そして今、私は終わりました。このようにUI theradにディスパッチャを使用する必要があります...
mMainView.Dispatcher.BeginInvoke(
() => MessageBox.Show(mSpWeb.CurrentUser.LoginName));
(この例では、コントローラーに sharepoint 2010 のログイン名を取得するように要求していましたが、必要なことは実行できます)
次のように、app.xaml でルート ビジュアルを定義する必要もあります。
var mainController = new MainController();
RootVisual = mainController.View;
これは私のアプリケーションによって私を助けました。たぶんそれもあなたを助けることができます...