我有一个带有绑定命令和命令参数的按钮:
<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
绑定首先解决的方法吗?
发布于 2015-06-12 20:55:58
您可能在命令类中遗漏了这一点:
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
每当CommandManager认为已发生更改并将影响命令执行能力时,就会引发事件。
https://stackoverflow.com/questions/30811873
复制相似问题