他のContextMenu
ユーザー コントロールで再利用されるユーザー コントロールがあります。問題は、これを使用したいコントロールが、通常の方法であるContextmenu
を作成しContextMenuViewModel
て入力する必要があることです。DataContext
ビューのファクトリを作成して、オンザフライで作成し、それを消費しているコントロールからのデータ コンテキストを心配しない方法はありますか?
ロケーターパターンを使用できます
元:
次のような「ロケータ」の使用:
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;
}
}
}