3

他のContextMenuユーザー コントロールで再利用されるユーザー コントロールがあります。問題は、これを使用したいコントロールが、通常の方法であるContextmenuを作成しContextMenuViewModelて入力する必要があることです。DataContext

ビューのファクトリを作成して、オンザフライで作成し、それを消費しているコントロールからのデータ コンテキストを心配しない方法はありますか?

4

1 に答える 1

1

ロケーターパターンを使用できます

元:

次のような「ロケータ」の使用:

DataContext="{Binding Main, Source={StaticResource Locator}}">

アプリケーションで作成されたロケーターがあります。

<Application x:Class="XXX.App"
             xmlns:views="clr-namespace:XXX.Views"
             xmlns:vm="clr-namespace:XXX.ViewModels"
             StartupUri="MainWindow.xaml"
             >
    <Application.Resources>
...
        <vm:ViewModelLocator x:Key="Locator"  />   
...     
    </Application.Resources>
</Application>

クラス「ロケーター」:

public class ViewModelLocator
{            
   private static MainViewModel _main;    

   /// Initializes a new instance of the ViewModelLocator class.

   public ViewModelLocator()            
   {                
      _main = new MainViewModel();            
   }    

  /// Gets the Main property which defines the main viewmodel.            

  public MainViewModel Main
  {                
     get                
       {              
       return _main;                
       }            
  }        


}
于 2013-10-25T09:56:04.433 に答える