gpt4 book ai didi

c# - WPF MVVM 疑惑

转载 作者:太空狗 更新时间:2023-10-29 21:10:59 29 4
gpt4 key购买 nike

您好 StackOverflow 用户(或 Stackoverflowers?):

我正在通过编写 WPF 代码来学习。我阅读了几篇文章/看到了几个截屏视频,并且来自 WEB 开发背景,我启动了 VS2010 并开始做一个示例应用程序来帮助我学习基础知识。

我也阅读了一些有关 MVVM 的内容,并开始使用它。我将我的解决方案设置为使用 WPF 4.0、ActiveRecord 2.1 和 SQLite,一切都很顺利。但是我还是有些疑惑:

  • 我创建了一个 MainWindowViewModel,并使用来自 here 的 RelayCommand 类去……传达命令。让 MainWindow 中的 MenuItem 将其命令绑定(bind)到此 View 模型的属性是否违反了任何准则?

  • 我将 MenuItem 命令绑定(bind)到的这个操作将实例化一个新的 ViewModel 和一个新的 View,并显示它。同样,这在 MVVM 上下文中可以吗?

  • 我的 MainWindow 将是一种“仪表板”,我将有多个模型附加到此仪表板。我应该将所有这些模型包装在一个 View 模型中吗?

像这样:

public class MainWindowViewModel {

private ObservableCollection<Order> openOrders;
private Address deliveryAddress;
private Order newOrder;
/* Wrappers for the OpenOrders Collection */
/* Wrappers for Delivery Address */
/* Wrappers for New Order */
/* Command Bindings */

}

TIA!

最佳答案

I created a MainWindowViewModel, and am using the RelayCommand class from here to... relay the command. Am I breaking any guidelines by having a MenuItem from the MainWindow to have its command bound to a property of this viewmodel?

不,您没有违反任何准则。将 MenuItem 绑定(bind)到 MainWindowViewModel 的命令是非常合适的(无论如何你会把这个命令放在哪里?)

This action I'm binding the MenuItem command to is going to instantiate a new ViewModel and a new View, and show it. Again, is that ok in the MVVM context?

当然,创建一个新的 ViewModel 是完全没问题的。至于创建新 View ,这取决于您如何创建它……您当然应该永远不要从 ViewModel 显式实例化 View ,因为它会引入 VM 对 View 的依赖性。

My MainWindow will be a kind of "dashboard", and I will have more than one model attached to this dashboard. Should I just wrap all those models in a single view model?

这取决于您所说的“包装”是什么意思...您的 MainWindowViewModel 可以通过属性公开其他 ViewModel,并且这些 VM 将显示在 View 的不同部分。如果那是你的意思,是的,你应该把它们包起来。

关于c# - WPF MVVM 疑惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3752371/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com