MainWindowと同じViewModelを使用する新しいウィンドウを作成する方法はありますか? これは、データグリッドを挿入、削除、更新などしたいというデータグリッドがあるためです。ただし、挿入するときは別のウィンドウで行いたいので、クリックすると別のウィンドウが開きますウィンドウから挿入してください。 しかし、私が見た限りでは、2つのビューが同じViewWModelを使用することはできません。 アイデアMVVM同じViewModelを使用する新しいウィンドウ
0
A
答えて
-1
私は願って、メインウィンドウが新しいウィンドウがメインウィンドウのビューモデルを使用することができる手段として、新しいウィンドウの所有者を設定した場合
。例については
、
Window newWindow= new Window();
newWindow.Owner = App.Current.MainWindow;
0
技術的には完全に可能であり、それを行うのは非常に簡単です。 Window1とWindow2の2つのウィンドウがあるとします。
あなたはWindow1.xaml.csでこのコードを持つことができます。Window1ViewModel.cs
void OpenNewWindowCommand_Execute()
{
var window2= new Window2();
window2.DataContext = this;
window2.Show();
}
で
void BtnOpenNewWindow_Click(object sender, EventArgs e)
{
var window2= new Window2();
window2.DataContext = this.DataContext;
window2.Show();
}
またはこのコードをしかし、それは良い習慣であるかどうかは疑問です。ビューモデル間でコードやデータを共有する方法があります。実際、それはビューモデルにのみ関連するものではなく、一般的なOOPの原則です。ビューとのviewmodel間の1の関係:あなたが見ることができるよう
abstract CommonViewModel
Window1ViewModel extends CommonViewModel
Window2ViewModel extends CommonViewModel
が、それは1を保持します:
はのviewmodels間でコードを共有するには、継承を使用することができます。のviewmodelsの間でデータを共有するには、あなたが異なるのviewmodelsから
var common = new CommonDataOrLogic(); //this is usually model
var viewmodel1 = Window1ViewModel(common);
var viewmodel2 = Window2ViewModel(common);
を単一のインスタンスを参照することができますし、使用できるパターンが多いが: シングルトン、ServiceLocatorは、IoCの、EventAggregator、など。
関連する問題
- 1. MVVM複数のビューPrismの同じViewModel
- 2. mvvmを使用して新しいウィンドウを開き、コレクションをviewmodelに渡します
- 3. MVVMを使用してViewModelからOK_Buttonをクリックした後、プログラムでウィンドウを閉じる
- 4. WPF Usercontrol MVVMを使用したデータバインディングViewModel
- 5. WPF MVVMウィンドウを閉じる
- 6. WPF MVVM - ViewModelにまず同じグループボックスにコントロールを追加
- 7. MVVMパターン使用時にViewModelにアクセス
- 8. MVVMがViewModelに通知していないINotifyPropertyChangedモデルの使用
- 9. MVVM-Lightメッセージングを使用したViewModelとモデル間の非同期通信?
- 10. MVVM WPFウィンドウを変更して前のウィンドウを閉じる
- 11. ASP.NET MVCとXAMARINで同じViewModelを使用する方法
- 12. ボタンをクリックすると新しいウィンドウが開きます。MVVM
- 13. IsChanged IChangeTrackingがウィンドウで起動しないWPF MVVMを閉じます。MVVM C#
- 14. 同じ目的のために同じWPFウィンドウを使用
- 15. MVVM - 既存のViewModelを新しいビューに渡してデータバインドする方法
- 16. 同じWPFウィンドウとViewModelの複数のインスタンス
- 17. MVVMライトツールキットを使用してViewModelにサービスを注入
- 18. 同じウインドウでリダイレクトし、新しいウィンドウでリダイレクトするCSSを使用してください
- 19. MVVMを使用したWPFのViewModelからのコマンドのトリガー
- 20. シルバー:MVVMを使用して、Silverlightでのviewmodel
- 21. MVVM ViewModel and childビュー
- 22. AndroidのViewModelとMVVM
- 23. WPF MVVM ViewModelにViewModelsが更新されていない
- 24. MVVMを使用してWPFでウィンドウの "WindowState"プロパティをバインドする
- 25. MVVM - リージョンでもあるViewModel?
- 26. MVVMを使用して戻るときにViewModelをリフレッシュする方法
- 27. UWP App Dynamic Pivot MVVMは常にviewmodelの新しいインスタンスを作成します
- 28. Javascript - 新しいタブでリンクを開く(同じウィンドウ)
- 29. JavaScript:同じウィンドウで新しいページを開く方法
- 30. WPF同じウィンドウ内に新しいusercontrolをロード
同じViewModel-Typeまたは同じインスタンス? – lokusking
ビューモデルは単なるオブジェクトであり、オブジェクトへの参照を使用しているだけなので、そうでない理由はありません。それはおそらくあなたがこれをしたくないと言いました。少なくとも、挿入ビューにマップされる可能性のある行ごとのビューモデルを見てください。 – Murph
なぜこれを下降させて閉じようとしたのですか?それは定期的な質問に関連するプログラミングです.... – Liero