EventToCommand更新CommandParameter

时间:2012-02-07 09:39:50

标签: .net wpf mvvm mvvm-light

我的EventToCommand定义包含一些复杂的CommandParameter,我想在触发事件时自动更新(使绑定值保持最新)。有没有办法使用EventToCommand来实现这种行为?

更新。我有一个CommandParameter绑定,它绑定到ElementName并具有ValueConverter。 ValueConverter检索鼠标位置:

Mouse.GetPosition(element)

因此,ValueConverter应该在命令执行之前更新。

我知道PassEventArgsToCommand可以解决这个问题,但我不喜欢这个解决方案。

1 个答案:

答案 0 :(得分:1)

我已经下载了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;
    ...
}
...