我有一个带有默认工具栏按钮的 reportViewer,用于减少绑定到命令的缩放NavigationCommands.DecreaseZoom
。我想在某些情况下禁用它,所以我绑定CanExecute
方法为该命令返回 false,该命令运行良好并按预期禁用按钮。但是,如果我使用快捷键,缩小仍然有效"Ctrl + Subtract key"
。我试图设置KeyBinding
为相同的命令,假设 CanExecute 可以工作,但它没有。因为,KeyBinding 中没有提供 CanExecute。有人可以建议我如何在某些情况下禁用 KeyGesture“Ctrl -”(CanExecute 中的逻辑)而不是永久禁用。
相关代码——
<DocumentViewer Name="documentViewer1"
Margin="0,0,0,30"
Style="{DynamicResource DocumentViewerStyle1}">
<DocumentViewer.CommandBindings>
<CommandBinding Command="NavigationCommands.DecreaseZoom"
CanExecute="DecreaseZoom_CanExecute" />
</DocumentViewer.CommandBindings>
<DocumentViewer.InputBindings>
<KeyBinding Command="NavigationCommands.DecreaseZoom"
Key="OemMinus"
Modifiers="Control" />
</DocumentViewer.InputBindings>
</DocumentViewer>
背后的代码 -
private void DecreaseZoom_CanExecute(object sender, CanExecuteRoutedEventArgs e)
{
if (((DocumentViewer)e.Source).PageViews.Count >= 3)
{
e.CanExecute = false;
e.ContinueRouting = false;
e.Handled = true;
}
}