WPF - 如何在自定义richtextbox上禁用默认的EditingCommands行为?

时间:2010-03-26 23:14:03

标签: .net wpf vb.net richtextbox

我想禁用“EditingCommands”中找到的WPF Richtextbox的大部分内置功能

我该如何禁用它们?

1 个答案:

答案 0 :(得分:1)

http://www.devx.com/dotnet/Article/34644/1954

  

您可以通过添加CommandBinding来禁用任何默认启用的命令。在下面的代码片段中,属性CanExecute引用了一个事件处理程序,该处理程序可以包含逻辑以防止命令执行:

<RichTextBox.CommandBindings>
     <CommandBinding 
       Command="EditingCommands.ToggleBold" 
       CanExecute="BlockTheCommand"/>
   </RichTextBox.CommandBindings>
  

C#代码隐藏文件中的相应事件处理程序在事件对象上设置了两个属性。将CanExecute设置为false可以使绑定到事件的组件知道此选项当前不可用。在这种情况下,要阻止ToggleBold命令,将CanExecute设置为false将禁用工具栏中的Bold按钮。第二个属性Handled阻止ToggleBold命令路由到RichTextBox:

protected void BlockTheCommand(object sender,
     CanExecuteRoutedEventArgs e)
   {
     e.CanExecute = false;
     e.Handled = true;
   }
  

如果您选择在CanExecute处理程序中合并复杂逻辑,请记住此事件经常被触发,因为UI会不断检查并重新检查命令是否可用。如果您需要访问数据库或Web服务等资源以确定该命令是否可用,请确保缓存资源并定期检查它,否则会破坏您的性能。