2012-02-07 67 views
0

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

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

Mouse.GetPosition(element) 

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

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

+0

也许你可以发布一个代码示例显示您的命令XAML和视图模型? – Rachel 2012-02-07 13:37:12

+0

你也可以通过“更新”CommandParameter来描述你的意思吗?通常这是绑定到视图模型内部的一些值,并传递给你的命令。 – AxelEckenberger 2012-02-07 13:39:04

回答

1

我已经下载了MVVM灯源代码,并介绍了被设置为true UpdateCommandParameterBeforeExecuting命令执行之前明确地更新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; 
    ... 
} 
...