Итак, у меня есть элемент, который имеет команду с двумя параметрами для передачи.WPF Multibinding - необходимо использовать Relaycommand
Я ранее делал это с фрагментом кода, который я нашел, но не могу на всю жизнь помнить, как это сделать или найти его снова.
Итак, вот multivalueconverter я уже создан:
public class MultiValueConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType,
object parameter, CultureInfo culture)
{
return values.Clone();
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
return (value as string).Split(' ');
}
}
Теперь мне нужно просто назначить функцию, я хочу позвонить в ICommand. Обычно я использую похожую строку:
enemyPopupTooltip = new RelayCommand(param => this.EnemyPopupTooltipEx(param),null);
Однако, это не будет работать, когда его multivalue.How я могу использовать мой RelayCommand передать 2 параметра, используя multivalueconverter, в мою функцию?
Для справки, здесь есть все, что внутри класса RelayCommand:
public class RelayCommand : ICommand
{
/// <summary>
/// Initializes a new instance of the <see cref="RelayCommand"/> class.
/// </summary>
/// <param name="execute">The execute.</param>
public RelayCommand(Action<object> execute)
: this(execute, null)
{
}
/// <summary>
/// Initializes a new instance of the <see cref="RelayCommand"/> class.
/// </summary>
/// <param name="execute">The execute.</param>
/// <param name="canExecute">The can execute.</param>
public RelayCommand(Action<object> execute, Predicate<object> canExecute)
{
if (execute == null)
throw new ArgumentNullException("execute");
_execute = execute;
_canExecute = canExecute;
}
/// <summary>
/// Defines the method that determines whether the command can execute in its current state.
/// </summary>
/// <param name="parameter">Data used by the command. If the command does not require data to be passed, this object can be set to null.</param>
/// <returns>
/// true if this command can be executed; otherwise, false.
/// </returns>
public bool CanExecute(object parameter)
{
return _canExecute == null ? true : _canExecute(parameter);
}
/// <summary>
/// Occurs when changes occur that affect whether or not the command should execute.
/// </summary>
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
/// <summary>
/// Defines the method to be called when the command is invoked.
/// </summary>
/// <param name="parameter">Data used by the command. If the command does not require data to be passed, this object can be set to null.</param>
public void Execute(object parameter)
{
_execute(parameter);
}
/// <summary>
/// Action
/// </summary>
private readonly Action<object> _execute;
/// <summary>
/// Predicate
/// </summary>
private readonly Predicate<object> _canExecute;
http://stackoverflow.com/questions/1350598/passing-two-command-parameters-using-a-wpf-binding – MajkeloDev
Это связано вопрос не показывает, что написано внутри станут назначенные MyViewModel.ZoomCommand, которые это то, с чем я сталкиваюсь :( – pingu2k4
Второй apporach: Не удается привязать требуемые параметры к некоторому свойству ViewModel? Тогда вы просто вызовете свойства VM в своем методе – MajkeloDev