C# ICommand Button?
Hallo,
wie kann ich in WPF mittels Command-Binding einen Button auslösen ?
Beispiel:
Click auf einen Button => Neue View geht auf
1 Antwort
Vom Beitragsersteller als hilfreich ausgezeichnet
Zunächst erstellst du dir eine Klasse, die von ICommand ableitet und als basis für deine Commands benutzt wird:
public class RelayCommand : ICommand
{
private Action<object> m_Execute;
private Func<object, bool> m_CanExecute;
public RelayCommand(Action<object> execute, Func<object, bool> canExecute = null)
{
m_Execute = execute;
m_CanExecute = canExecute;
}
public bool CanExecute(object parameter)
{
return m_CanExecute == null || m_CanExecute(parameter);
}
public void Execute(object parameter)
{
m_Execute(parameter);
}
}
Jetzt kannst du in deinem ViewModel einen Command erstellen:
private RelayCommand _CancelCommand;
public RelayCommand CancelCommand
{
get
{
return _CancelCommand ?? (_CancelCommand = new RelayCommand(
(p) =>
{
// Hier kommt der eigentliche Code für das Click-Event rein.
},
(p) => { return true; // Enable / Disable }
));
}
}
Und zum Abschluss bindest du diesen Command an deinen Button:
<Button Command="{Binding CancelCommand}">Abbrechen</Button>
Mit dem CommandManager evaluiert man neu, ob ein Button enabled / disabled ist (gesetz dem Fall, CanExecute retuniert nicht pauschal "true"):
CommandManager.RequerySuggested
Woher ich das weiß:Berufserfahrung