WPF Richtextbox和键盘快捷键

WPF Richtextbox和键盘快捷键,wpf,localization,richtextbox,shortcut,Wpf,Localization,Richtextbox,Shortcut,我正在使用richtextbox为德国用户实现一个WPF应用程序。他们想用他们的“普通”键盘快捷键来做一些基本的格式化:粗体、斜体、下划线 在英语中,快捷键CTRL+B、CTRL+I和CTRL+U在Richtextbox中工作 但是,“普通”德语快捷键是CTRL+SHIFT+F(Fett=Bold)、CTRL+SHIFT+K(Kursiv=Italic)和CTRL+SHIFT+U(下划线)。在德国Windows计算机(Windows 7)上运行WPF(.net 4.0)应用程序时,Richtte

我正在使用richtextbox为德国用户实现一个WPF应用程序。他们想用他们的“普通”键盘快捷键来做一些基本的格式化:粗体、斜体、下划线

在英语中,快捷键CTRL+B、CTRL+I和CTRL+U在Richtextbox中工作

但是,“普通”德语快捷键是CTRL+SHIFT+F(Fett=Bold)、CTRL+SHIFT+K(Kursiv=Italic)和CTRL+SHIFT+U(下划线)。在德国Windows计算机(Windows 7)上运行WPF(.net 4.0)应用程序时,Richttextbox不会对这些快捷方式作出反应,而且“英语”快捷方式也不起作用。只有CTRL+SHIFT+F在执行某些操作,但这是错误的:它使所选文本变为斜体,而不是粗体

有没有关于如何解决这个问题的建议?有没有办法为RichTextBox显式定义快捷方式映射?还有其他建议吗?这是虫子吗

亲切问候,


Robbie De Sutter

我认为您可以禁用不允许的命令绑定:

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

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

受保护的无效块命令(对象发送器,
CanExecuteRoutedEvents参数(e)
{
e、 CanExecute=false;
e、 已处理=正确;
}

然后,您可以使用此处显示的内容为您希望允许的内容创建自定义命令绑定:

这可能会起作用,但不幸的是,本地化被破坏,因为我必须显式映射目标语言的快捷方式。虽然这是一个解决问题的方法(因为我针对的是德国用户),但这意味着我需要将其更改为另一个本地化,比如说法语。或者,如果一个德国用户实际上更喜欢英文窗口,他可能会习惯于英文快捷方式,而这在当时是行不通的。。。