有什麼方法可以使用與MainWindow使用相同ViewModel的新窗口? 原因是我有一個數據網格,我想要插入,刪除項目,更新等等。但是,當涉及到插入我想在一個單獨的窗口中,如在你點擊,打開另一個窗口並從那裏插入。 但據我所見,兩個視圖不可能使用相同的ViewWModel。 任何想法?MVVM使用相同ViewModel的新窗口
0
A
回答
-1
我希望,
如果設置了新窗口的所有者作爲主窗口意味着新的窗口,可以使用主窗口的視圖模型。
例如,
Window newWindow= new Window();
newWindow.Owner = App.Current.MainWindow;
0
在技術上是完全可能的,這是很容易做到的。 可以說你有兩個窗口Window1和Window2。在Window1ViewModel.cs
void BtnOpenNewWindow_Click(object sender, EventArgs e)
{
var window2= new Window2();
window2.DataContext = this.DataContext;
window2.Show();
}
或驗證碼
void OpenNewWindowCommand_Execute()
{
var window2= new Window2();
window2.DataContext = this;
window2.Show();
}
然而,這是值得懷疑它是否是一個好習慣:
,你可以有這樣的代碼在Window1.xaml.cs。如何在視圖模型之間共享代碼或數據有更好的方法。實際上它只與視圖模型無關,它們是一般的面向對象原則。
要共享的ViewModels之間的代碼,你可以使用繼承:
abstract CommonViewModel
Window1ViewModel extends CommonViewModel
Window2ViewModel extends CommonViewModel
,你可以看到,它保持1:視圖和視圖模型之間一對一的關係。
要共享的ViewModels之間的數據,你可以從不同的ViewModels
var common = new CommonDataOrLogic(); //this is usually model
var viewmodel1 = Window1ViewModel(common);
var viewmodel2 = Window2ViewModel(common);
參考實例,並有很多的方式,你可以使用: 辛格爾頓,服務定位,國際奧委會,EventAggregator等。
相關問題
- 1. 用MVVM打開多個窗口使用相同的viewmodel使用MVVM
- 2. 使用相同的viewmodel不同的窗口
- 3. 找到與WPF和MVVM/MVVMLight中的ViewModel相關的窗口
- 4. 使用MVVM和viewmodel通信的WPF窗口模式對話框
- 5. WPF MVVM調用ViewModel窗口關閉的保存方法
- 6. DevExpress - MVVM - 用不同的ViewModel生成TabItems
- 7. 從MVVM WPF中內容的ViewModel中關閉一個窗口?
- 8. 有了MVVM,每個UI窗口都有自己的ViewModel嗎?
- 9. 使用新的用戶控制窗口MVVM更新詳細信息窗格WPF
- 10. 如何創建與父窗口狀態相同的新窗口?
- 11. 刷新窗口運行命令相同的瀏覽器窗口
- 12. 使用MVVM與MVVM從主窗口打開子窗口的問題
- 13. MVVM ViewModel與MVC ViewModel
- 14. Mvvm Light ViewModel With ViewModel
- 15. 更改ViewModel時窗口不會更新
- 16. 使用MVVM從ViewModel單擊OK_Button後,以編程方式關閉窗口
- 17. mvvm綁定自定義事件與自定義窗口與viewmodel
- 18. 關閉實際窗口並從ViewModel打開一個新窗口
- 19. 關閉視圖使用MVVM或不使用ViewModel的viewModel
- 20. MVVM Light WPF打開新窗口
- 21. MVVM光工具包:新窗口
- 22. MVVM(與WPF) - 將多個視圖綁定到相同的ViewModel
- 23. MVVM多個視圖棱鏡相同的ViewModel
- 24. 如何使用MVVM Light Toolkit打開一個新窗口
- 25. 如何處理使用MVVM打開和關閉新窗口?
- 26. MvvM ViewModel到ViewModel通信
- 27. mvvm viewmodel vs asp.net mvc viewmodel
- 28. MVVM燈中的子窗口
- 29. 更新模型MVVM的ViewModel屬性UWP
- 30. Android的ViewModel和MVVM
相同的ViewModel類型或相同的實例? – lokusking
視圖模型只是一個對象 - 您只是使用對象的引用,所以沒有理由不這樣做。這就是說你可能不想這樣做。至少要查看每行可能映射到插入視圖的視圖模型 – Murph
爲什麼這是downvoted並投票結束?這是一個有關編程的常見問題.... – Liero