Обновление EventToCommand CommandParameter - PullRequest
0 голосов
/ 07 февраля 2012

Мое определение EventToCommand содержит некоторый сложный CommandParameter, который я хочу автоматически обновлять (обновлять значение привязки) при запуске события.Есть ли способ добиться такого поведения с помощью EventToCommand?

Обновление. У меня есть привязка CommandParameter, которая связана с ElementName и имеет ValueConverter.ValueConverter извлекает положение мыши:

Mouse.GetPosition(element)

Поэтому ValueConverter должен быть обновлен непосредственно перед выполнением команды.

Я знаю, что PassEventArgsToCommand мог решить эту проблему, но мне не нравится это решение.

1 Ответ

1 голос
/ 09 февраля 2012

Я скачал исходный код MVVM Light и представил UpdateCommandParameterBeforeExecuting, для которого установлено значение true, явно обновляет CommandParameterProperty перед выполнением команды.

Вот исходный код:

...
/// <summary>
/// Specifies whether CommandParameter property should be updated before Command execution
/// </summary>
public bool UpdateCommandParameterBeforeExecuting
{
    get; 
    set; 
}
...
protected override void Invoke(object parameter)
{
    ...
    var command = GetCommand();

    if (UpdateCommandParameterBeforeExecuting)
    {
        BindingOperations.GetBindingExpression(this, CommandParameterProperty).UpdateTarget();
    }

    var commandParameter = CommandParameterValue;
    ...
}
...
...