我有一个带有绑定命令和命令参数的按钮:
<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
绑定首先解决的方法?
答案 0 :(得分:1)
您可能在命令类中忽略了这一点:
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
只要CommandManager认为发生了更改并且将影响命令执行的能力,就会引发事件。