Команда и дизайн CommandParameter
Допустим, у вас есть модель представления, которая управляет медиаплеером. Он предлагает стандартные функции управления, такие как "Звезда", "Стоп", "Пауза" и "Возобновить".
Я думаю о двух способах дизайна в модели
1-й путь: каждое действие имеет свою команду. - StartCommand - StopCommand - PauseCommand - ResumeCommand
Каждая кнопка в представлении будет связана с соответствующей командой.
2-й способ: одна команда с разными параметрами. PerformActionCommand и перечисление, которое будет выглядеть
enum ActionEnum
{
start,
stop,
pause,
resume
}
Какой способ вы считаете предпочтительным и по каким причинам?
2 ответа
В этом случае лучше использовать отдельные команды. Команды не очень похожи, поэтому, если у вас есть один обработчик команд, вам придется использовать большой оператор switch внутри и, вероятно, вызывать отдельные методы.
Другая причина в том, что с разными командами вы легко можете иметь разные условия, когда эти команды включены или нет - например, Возобновление включено только тогда, когда проигрыватель находится в режиме паузы.
В дополнение к тому, что пишет Jogy, я бы также предложил отдельные команды. Таким образом, вы также можете использовать встроенные мультимедийные команды wpf.
Это имеет некоторые потенциальные преимущества:
вам не нужно писать класс, реализующий ICommand для каждой команды, потому что он уже находится внутри WPF
Каждая медиа-команда на самом деле представляет собой RoutedUICommand, что означает, что она имеет текстовое свойство, которое вы можете использовать в качестве кнопки для своего контента.
- С некоторыми командами вы можете воспользоваться уже встроенными жестами ввода.