假设您有一个控制媒体播放器的视图模型。它必须提供标准控制功能,如Star,Stop,Pause和Resume。
我正在考虑在视图模型中设计它的两种方法
第一种方式:每个动作都有自己的命令。 - StartCommand - StopCommand - PauseCommand - ResumeCommand视图中的每个按钮都将绑定到它的相关命令。
第二种方式:一个具有不同命令参数的命令。 PerformActionCommand和一个看起来像
的枚举enum ActionEnum
{
start,
stop,
pause,
resume
}
您认为哪种方式更可取?出于什么原因?
答案 0 :(得分:1)
在这种情况下,使用单独的命令会更好。这些命令不是很相似,所以如果你有一个命令处理程序,你必须在里面使用一个大的switch语句,并且可能调用单独的方法。
另一个原因是,使用不同的命令,当启用或不启用这些命令时,您可以轻松地拥有不同的条件 - 例如,仅当播放器暂停时才启用Resume。
答案 1 :(得分:0)
除了Jogy写的内容之外,我还会选择单独的命令。通过这种方式,您还可以使用内置的wpf media commands。
这有一些潜在的优势:
您不需要为每个命令编写实现ICommand的类,因为它已经在WPF中
每个媒体命令实际上都是RoutedUICommand,这意味着它具有您可以用作按钮内容的文本格式。