Command和CommandParameter设计

时间:2012-09-24 11:09:04

标签: wpf mvvm command commandparameter

假设您有一个控制媒体播放器的视图模型。它必须提供标准控制功能,如Star,Stop,Pause和Resume。

我正在考虑在视图模型中设计它的两种方法

第一种方式:每个动作都有自己的命令。 - StartCommand - StopCommand - PauseCommand - ResumeCommand

视图中的每个按钮都将绑定到它的相关命令。

第二种方式:一个具有不同命令参数的命令。 PerformActionCommand和一个看起来像

的枚举
enum ActionEnum
{
  start, 
  stop,
  pause,
  resume
}

您认为哪种方式更可取?出于什么原因?

2 个答案:

答案 0 :(得分:1)

在这种情况下,使用单独的命令会更好。这些命令不是很相似,所以如果你有一个命令处理程序,你必须在里面使用一个大的switch语句,并且可能调用单独的方法。

另一个原因是,使用不同的命令,当启用或不启用这些命令时,您可以轻松地拥有不同的条件 - 例如,仅当播放器暂停时才启用Resume。

答案 1 :(得分:0)

除了Jogy写的内容之外,我还会选择单独的命令。通过这种方式,您还可以使用内置的wpf media commands

这有一些潜在的优势:

  • 您不需要为每个命令编写实现ICommand的类,因为它已经在WPF中

  • 每个媒体命令实际上都是RoutedUICommand,这意味着它具有您可以用作按钮内容的文本格式。

  • 您可以利用已有的内置输入手势和一些命令。