Я использую MVVM в своем проекте WPF. Теперь я хочу отобразить подокно, когда кто-то нажимает кнопку. Чтобы достичь этого классически, я бы вызвал метод Show (). Теперь, чтобы сохранить ясность моего приложения, нужно привязать кнопку к функции Show () подокна.
Поскольку нажатие кнопки (выбор меню, что угодно) не всегда разрешено, я написал пользовательскую команду, которая оценивает, может ли команда быть выполнена. Однако я не нашел подсказки, как правильно вызвать функцию этого элемента управления. Это смысл делать какой-то классический стиль (код в интерфейсе)?
Изменить (включить код)
XAML:
<MenuItem Foreground="White" Header="File">
<MenuItem Header="Login" Background="#FF444444" Command="{Binding Dialog.ApplicationLoginCommand}" />
<MenuItem Header="Logout" Background="#FF444444" Command="{Binding Dialog.ApplicationLogoutCommand}" />
<MenuItem Header="Exit" Background="#FF444444" Command="{Binding Dialog.ApplicationShutdownCommand}" />
</MenuItem>
C #:
public class ApplicationDisplayLoginCommand : ICustomCommand {
private MyViewModel _ViewModel = null;
public ApplicationDisplayLoginCommand( MoneyManagementViewModel vm ) {
_ViewModel = vm;
}
#region ICustomCommand Members
public event CustomCommandExecutedDelegate CustomCommandExecuted;
#endregion
#region ICommand Members
public bool CanExecute( object parameter ) {
return ! _ViewModel.IsLoggedIn;
}
public event EventHandler CanExecuteChanged {
add {
CommandManager.RequerySuggested += value;
}
remove {
CommandManager.RequerySuggested -= value;
}
}
public void Execute( object parameter ) {
if (null != CustomCommandExecuted) {
CustomCommandExecuted ();
}
_ViewModel.Login ();
}
}
ICustomCommand наследует от ICommand, просто чтобы добавить событие, поскольку одна команда относится к разным интерфейсам, которые требуют, чтобы команда работала по-разному.
НТН
-sa