我想禁用“EditingCommands”中找到的WPF Richtextbox的大部分内置功能
我该如何禁用它们?
答案 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服务等资源以确定该命令是否可用,请确保缓存资源并定期检查它,否则会破坏您的性能。