Command.CanExecute触发后CommandParameter绑定解析

时间:2015-06-12 20:42:23

标签: c# wpf xaml

我有一个带有绑定命令和命令参数的按钮:

    <Button Margin="5,0,5,5" Style="{StaticResource MainButton}" Grid.Row="2" Grid.RowSpan="2" Grid.Column="3" Padding="0">
         <Button.CommandParameter>
              <MultiBinding Converter="{StaticResource SwapArgsConverter}" ConverterParameter="-1">
                   <Binding RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType=tlq:SmartWarningsWindow}" Path="DataContext.SelectedWarning"></Binding>
                   <Binding Path="Rank"></Binding>
              </MultiBinding>
         </Button.CommandParameter>
         <Button.Command>
              <Binding RelativeSource="{RelativeSource FindAncestor, AncestorType=tlq:SmartWarningsWindow}" Path="DataContext.SwapCommand"></Binding>
         </Button.Command>
     </Button>

绑定一切正常,但Command绑定解析,ICommand.CanExecute方法在CommandParameter绑定解析之前触发。这会导致在窗口加载时错误地禁用我的控件。

我尝试了几件事,包括在Command绑定之后放置CommandParameter绑定,如上所示(最初命令绑定是属性)。

有没有人知道强制CommandParameter绑定首先解决的方法?

1 个答案:

答案 0 :(得分:1)

您可能在命令类中忽略了这一点:

public event EventHandler CanExecuteChanged
{
    add { CommandManager.RequerySuggested += value; }
    remove { CommandManager.RequerySuggested -= value; }     
}

只要CommandManager认为发生了更改并且将影响命令执行的能力,就会引发事件。