C# CommandParameter绑定在Command.CanExecute激发后解析

C# CommandParameter绑定在Command.CanExecute激发后解析,c#,wpf,xaml,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 S

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

    <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>

绑定都可以正常工作,但是
命令
绑定解析,并且
ICommand.CanExecute方法在
CommandParameter
绑定解析之前激发。这会导致在加载窗口时错误地禁用我的控件

我尝试了几种方法,包括将
命令
绑定放在上面看到的
命令参数
绑定之后(最初命令绑定是一个属性)


有人知道如何强制先解析
CommandParameter
绑定吗?

您的命令类中可能缺少以下内容:

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

每当CommandManager认为发生了更改并将影响命令的执行能力时,就会引发一个事件

您是否尝试在命令类中重新查询?很抱歉延迟!这是正确的答案,我被拉上了另一个项目,直到现在才回到这个问题上