1

ビューモデルをDataContextとしてビューに「接続」しようとしています。アプリケーション全体の1つのビューからビューモデルへのシナリオを使用します。

私は次の方法を使用してアタッチするというアイデアが好きです(これは正常に実行されます)。

 <UserControl ......Window Stuff.......>
        <UserControl.DataContext >
             <vm:MyViewModel/>
         </UserControl.DataContext>
 </UserControl>

ただし、xamlエディターは紫色の波線を下<vm:MyViewModel/>に配置し、ホバーテキストでエラーが発生します

  "Cannot create instance of vm:MyViewModel"

しかし、それは私のアプリケーションを正しく構築/実行し、データを提示します。

 <UserControl>
    <UserControl.Resources>
        <DataTemplate DataType="{x:Type vm:MyViewModel}">
             <vw:MyView/>
        </DataTemplate>
   </UserControl.Resources>
 </UserControl>

許容できるコードのようですが、私のデータは表示されません。

DataContext参照をコメントアウトすることは、コントロールを手動で編集するだけでは本当に面倒です。私は何か間違ったことをしていますか/何かを忘れていますか?

前もって感謝します!:)

4

1 に答える 1

0

ビューモデルのコンストラクターで何かが起こっている可能性があり、VisualStudio内でモデルをインスタンス化できません。

ビューモデルのコンストラクターで何かを実行する前にステートメントを追加してreturn、再構築し、エラーがなくなるかどうかを確認してください。

現在のプロセスがVisualStudio内にあるかどうかを判断する拡張メソッドは次のとおりです。

public static class Extensions
{
    /// <summary>
    /// Extension method to determine if the current process is executing
    /// code within the Visual Studio designer or not.
    /// </summary>
    public static bool IsVisualStudioDesigner( this Process process )
    {
        return process.MainModule.ModuleName.Contains( "devenv.exe" );
    }
}

そして、コンストラクターで:

public ctor()
{
  if ( Process.GetCurrentProcess().IsVisualStudioDesigner() )
    return;

  // do constructor stuff
}
于 2012-09-28T18:50:04.520 に答える