アプリケーションを構築するためにMEFとMVVMLightを使用しようとしています。
うまく機能してインポートに成功したものを接続することができましたが、その過程でViewModelLocatorを完全に見逃しているようで、ViewModelLocatorでMEFを適切に使用する方法と、実際に必要かどうか疑問に思っています。私のデザインが間違っていますか?
したがって、App.xamlではstartupUriを無効にし、App.xaml.csでは次のようにします。
[Import("MainWindow", typeof(Window))]
public new Window MainWindow
{
get { return base.MainWindow; }
set { base.MainWindow = value; }
}
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
// Load catalog in normal way
...
MainWindow.Show();
}
私のMainWindowコードはこれです:
[Export("MainWindow", typeof(Window))]
public partial class MainWindow : Window
{
[ImportingConstructor]
public MainWindow([Import("MainViewModel")] MainViewModel vm)
{
InitializeComponent();
DataContext = vm;
}
}
最後に私のViewModelはこれです:
[Export("MainViewModel", typeof(MainViewModel))]
public class MainViewModel : ViewModelBase, IPartImportsSatisfiedNotification
{
// I do some MEF imports here also
}
しかし、私はこれを正しい方法で何をしているのでしょうか、それとももっと賢明なアプローチがありますか?ViewModelLocatorを本当に無視できますか?