Команда и дизайн CommandParameter

Допустим, у вас есть модель представления, которая управляет медиаплеером. Он предлагает стандартные функции управления, такие как "Звезда", "Стоп", "Пауза" и "Возобновить".

Я думаю о двух способах дизайна в модели

1-й путь: каждое действие имеет свою команду. - StartCommand - StopCommand - PauseCommand - ResumeCommand

Каждая кнопка в представлении будет связана с соответствующей командой.

2-й способ: одна команда с разными параметрами. PerformActionCommand и перечисление, которое будет выглядеть

enum ActionEnum
{
  start, 
  stop,
  pause,
  resume
}

Какой способ вы считаете предпочтительным и по каким причинам?

2 ответа

Решение

В этом случае лучше использовать отдельные команды. Команды не очень похожи, поэтому, если у вас есть один обработчик команд, вам придется использовать большой оператор switch внутри и, вероятно, вызывать отдельные методы.

Другая причина в том, что с разными командами вы легко можете иметь разные условия, когда эти команды включены или нет - например, Возобновление включено только тогда, когда проигрыватель находится в режиме паузы.

В дополнение к тому, что пишет Jogy, я бы также предложил отдельные команды. Таким образом, вы также можете использовать встроенные мультимедийные команды wpf.

Это имеет некоторые потенциальные преимущества:

  • вам не нужно писать класс, реализующий ICommand для каждой команды, потому что он уже находится внутри WPF

  • Каждая медиа-команда на самом деле представляет собой RoutedUICommand, что означает, что она имеет текстовое свойство, которое вы можете использовать в качестве кнопки для своего контента.

  • С некоторыми командами вы можете воспользоваться уже встроенными жестами ввода.
Другие вопросы по тегам