У меня есть ReportViewer с кнопкой на панели инструментов по умолчанию для уменьшения масштаба, связанной с командой NavigationCommands.DecreaseZoom
. Я хочу отключить его в некоторых ситуациях, поэтому я связываю метод CanExecute
для возврата false для этой команды, которая прекрасно работает, и отключаю кнопку, как и ожидалось. Но все равно уменьшение масштаба работает, если я использую комбинацию клавиш "Ctrl + Subtract key"
. Я попытался установить KeyBinding
для той же команды, предполагая, что CanExecute будет работать, но это не так. Поскольку CanExecute не предоставляется в KeyBinding. Может кто-нибудь предложить, как я могу отключить 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;
}
}