【问题标题】:EventToCommand Update CommandParameterEventToCommand 更新命令参数
【发布时间】:2012-02-07 09:39:49
【问题描述】:

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

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

Mouse.GetPosition(element)

所以 ValueConverter 应该在命令执行之前更新。

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

【问题讨论】:

  • 也许您可以发布一个代码示例,显示您的命令 XAML 和 ViewModel?
  • 您能否描述一下“更新”CommandParameter 的含义。通常这会绑定到视图模型中的某个值,然后传递给您的命令。

标签: .net wpf mvvm mvvm-light


【解决方案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;
    ...
}
...

【讨论】:

    猜你喜欢
    • 2014-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多