【发布时间】:2012-11-12 16:46:58
【问题描述】:
如果 TL;DR:请参阅最后一段。
Pure WPF“建议”将演示文稿(控件、文本、图标)放入视图中,并将命令逻辑(Execute、CanExecute 方法)放入代码隐藏中。除了将逻辑放入视图 (CommandBindings) 和代码隐藏是一种不受欢迎的做法之外,它对 XAML 复制 毫无帮助:文本、图标、大图标、提示和大量每次使用命令时都必须复制其他属性:主菜单、上下文菜单、工具栏按钮、功能区按钮和其他控件。
看起来第一个问题(真正分离视图和逻辑)由DelegateCommand、RelayCommand 和类似方法解决。命令逻辑被移入 ViewModels(或在 MVVMC 的情况下为控制器),代码隐藏是干净的,视图中没有 CommandBindings 和其他废话。
但是,对于演示文稿重复问题,我找不到普遍接受的解决方案。我想将命令演示(文本、图标)和命令逻辑(Execute、CanExecute 方法)分开。我能找到的所有代码要么将演示文稿放入代码中(通过创建带有Label 和Icon 等附加属性的RoutedCommand),要么将代码放入演示文稿中(即,将处理程序放入视图和代码隐藏中)。我也不喜欢。我认为演示文稿应该完全在 XAML 中,代码应该完全在 CS 中(在 ViewModel 或 Controller 中)。
问题:如何分离视图(XAML 控制引用命令)、命令表示(每个命令的标签、图标等)和命令逻辑(Execute 的 C# 代码, CanExecute 等在 ViewModels 或 Controllers 中)?
【问题讨论】:
-
已经两票接近了?零厘米?这个问题是不可回答的还是我错过了什么?如果您投票结束,请至少发表评论。如果你不告诉我我做错了什么,我无法学习。
-
阅读常见问题解答中的“非建设性”描述 - “此问题可能会引发辩论、争论、投票或扩展讨论”。出于同样的原因,Stack Overflow 不是一个问“我应该如何构建我的软件?”的好地方。问题。
-
@JeanHominal 在我看来,我没有问过如何构建我的软件,我问过一个我认为非常常见的问题,考虑到多少代码我已经看到了这个问题没有解决的地方,即使在微软的代码中也是如此。从选票来看(来自 20 个视图的 5 +1 票),我不是唯一一个想要找到解决方案的人。
-
我真的应该只保留我之前评论的第一句话。我的意思是,任何答案都可能引起争论。 (很多“模式”问题导致)
标签: c# wpf xaml mvvm routed-commands