2012-02-07 82 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; 
    ... 
} 
...