- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
您好 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/
我有以下变量: string str1 = "1"; string str2 = "asd"; string str3 = "3.5"; string str4 = "a"; 现在我需要找到每个字符串
这个问题在这里已经有了答案: Is Java "pass-by-reference" or "pass-by-value"? (92 个回答) 关闭 8 年前。 public class progr
我对这种行为有些疑惑。谁能解释一下 void Decrement(int* x){ *x--; //using this line, the output is 5
您好 StackOverflow 用户(或 Stackoverflowers?): 我正在通过编写 WPF 代码来学习。我阅读了几篇文章/看到了几个截屏视频,并且来自 WEB 开发背景,我启动了 VS
在阅读 HTML5 IndexedDB Specification 时我对它的异步请求模型有些怀疑。查看 request api example 时, open 方法用于启动异步请求。 var req
有几个问题,首先是这个方法,它将 int[] 转换为 byte[]: public static byte[] intToByte(int[] input){ ByteBuffer byteB
我是一名优秀的程序员,十分优秀!