私はWPF、MVVMの初心者です。今、私はMVVM Lightを調査しています。私は混乱しました。皆さんからの助けに感謝します。この投稿をご覧いただきありがとうございます。
ビューの背後にあるコードを完全に削除できますか (.xaml 内のどこかで InitializeComponent() を呼び出す --> いくつかの単純なケースでは、view.xaml.cs はもう必要ありません)。
私のプロジェクトには多くのビューの洞察がありますが、いくつのロケーターが必要ですか? ビューごとに個別のロケーターを作成するつもりです。そして、app.xml にすべてのロケーターを登録すると、ユーザーがアプリケーションを実行した直後にすべてのビューが初期化および登録されるのだろうか? はいの場合、パフォーマンスが良くありませんか?
主な質問: 私にはシナリオがあります: 私には次のような多くの形式があります:
- MainForm: アプリケーションによって呼び出される最初のフォームです。
- ImportForm: ユーザーが (MainForm から) [インポート] をクリックすると呼び出される
仮定: バインディングに関連するすべての作業を完了しました (ボタンのインポート --> RelayCommand(OnImport) など)。このシナリオを実装するためのベスト プラクティスは何ですか? 1. 以下のように ImportForm を init に実装して表示するだけです。
public void OnImport()
{
ImportForm importForm = new ImportForm();
importForm.ShowDialog();
}
単純ですが、MVVM のパラダイムに従っているのでしょうか。
だから、私はいくつかの調査を行い、次のような別の方法を行いました:
public void OnImport() { //// メッセージを送信するだけ Messenger.Default.Send( new NotificationMessage(this, "OnImport")); }
コード ビハインド: MainForm.xaml.cs
public MainForm()
{
InitializeComponent();
Messenger.Default.Register<NotificationMessage>(this, (nm) =>
{
if (nm.Sender == this.DataContext)
{
if (nm.Notification == "OnImport")
{
ImportForm importForm = new ImportForm();
importForm.ShowDialog();
}
}
});
}
この方法では、コードビハインド内にコードを記述しなければなりません --> 問題はありますか?
上記のソリューションはどちらも上記のシナリオを正しく完了することができますが、どちらが優れているか混乱していますか、実際に正しいソリューションはありますか?
長い質問にお付き合いいただき、重ねてお礼申し上げます。