Очень часто реализация RelayCommand
кажется, включает в себя следующие строки:Является ли общая реализация RelayCommand нарушением шаблона MVVM?
public event EventHandler CanExecuteChanged
{
add
{
CommandManager.RequerySuggested += value;
}
remove
{
CommandManager.RequerySuggested -= value;
}
}
Это кажется очень ущербным для меня, потому что CommandManager
является компонентом WPF и обычно мои команды находятся в классе ViewModel. Поскольку viewmodel не должен знать точку зрения и должен работать с различными структурами и т. Д., Это кажется мне очень странным. Например, эта реализация будет невозможна, если вы выделите свою модель просмотра в дополнительном проекте, который не знает пространство имен WPF (например, PCL).
Является ли эта реализация нарушением шаблона MVVM?
Или вы можете разместить RelayCommand
на ваш взгляд?
Если это действительно ошибочно, существует ли передовая практика, которая решает эту проблему?
ваш viewmodel для вашего зрения, просто не ссылаясь на него. так что все в порядке. – blindmeis
@blindmeis Используя компонент вида, он действительно ссылается на него.Будет довольно ясно, если вы попытаетесь использовать эту реализацию RelayCommand в приложении, отличном от wpf. –
Я не думаю, что вы будете использовать viemodel для wpf в другом приложении, отличном от wpf :) Основная цель - тестирование без интерфейса, и это работает. – blindmeis