我的EventToCommand定义包含一些复杂的CommandParameter,我想在触发事件时自动更新(使绑定值保持最新)。有没有办法使用EventToCommand来实现这种行为?
更新。我有一个CommandParameter绑定,它绑定到ElementName并具有ValueConverter。 ValueConverter检索鼠标位置:
Mouse.GetPosition(element)
因此,ValueConverter应该在命令执行之前更新。
我知道PassEventArgsToCommand可以解决这个问题,但我不喜欢这个解决方案。
答案 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;
...
}
...