有什么方法可以使用与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