Ho un semplice pulsante che utilizza un comando quando viene eseguito, tutto funziona correttamente ma vorrei passare un parametro di testo quando si fa clic sul pulsante.Passare un parametro a ICommand
Penso che il mio XAML è ok, ma io sono sicuro come modificare la mia classe RelayCommand
per ricevere un parametro:
<Button x:Name="AddCommand" Content="Add"
Command="{Binding AddPhoneCommand}"
CommandParameter="{Binding Text, ElementName=txtAddPhone}" />
public class RelayCommand : ICommand
{
private readonly Action _handler;
private bool _isEnabled;
public RelayCommand(Action handler)
{
_handler = handler;
}
public bool IsEnabled
{
get { return _isEnabled; }
set
{
if (value != _isEnabled)
{
_isEnabled = value;
if (CanExecuteChanged != null)
{
CanExecuteChanged(this, EventArgs.Empty);
}
}
}
}
public bool CanExecute(object parameter)
{
return IsEnabled;
}
public event EventHandler CanExecuteChanged;
public void Execute(object parameter)
{
_handler();
}
}
Grazie che funziona alla grande! Non sono nuovo di WPF, ma sono nuovo di MVVM, quindi i comandi sono un nuovo concetto; ma posso già vedere come potrebbero aiutare i test unitari. Quindi aggiungere
@MichaelHarper sì, esattamente un delegato che accetta un parametro oggetto. Puoi vedere che hanno definito più tipi di azione lungo queste linee: http://msdn.microsoft.com/en-us/library/018hxwa8.aspx – McGarnagle
Grazie ancora, è stato di grande aiuto: D –