2010-04-13 59 views
0

我有一個Windows.Documents.InlineUIContainerin一個RichTextBox,有時它的對準變化的字體大小時,我打組合鍵如Ctrl +空格。我找不到任何地方處理這些事件並以某種方式阻止它們。我不想在RichTextBox中阻止它。我更多地只是在InlineUIContainer上尋找一種方法來阻止它。問題的InlineUIContainer

回答

1

InlineUIContainer是FrameworkContentElement上,所以它在所有正常的事件路由參與。所以方框命令路由需要做的是使用在InlineUIContainer CommandManager.AddExecutedHandler(或等效AddHandler(CommandManager.ExecutedEvent))和標記的命令爲已處理。

container.AddHandler(CommandManager.ExecutedEvent, new ExecutedRoutedEventHandler((obj, e) => 
{ 
    var command = e.Command as RoutedCommand; 
    if(command!=null && command.OwnerType==typeof(EditingCommands)) 
    e.Handled = true; 
})); 

或者相同的處理器可以被添加到您的在線UI內容(InlineUIContainer.Content),如果它更容易這樣做的。

注意上面的代碼塊的所有EditingCommands,但可以根據需要阻止任何其他命令。

+0

CommandManager.AddExecutedHandler(inlineUIContainer,ExecutedCustomCommand),因爲它需要的UIElement(不是InlineUIContainer)不起作用。任何建議? – paradisonoir 2010-04-15 18:51:02

+0

對不起。 CommandManager.AddExecutedHandler是一種簡便的方法,它簡化了添加執行處理程序的語法。我忘了它只適用於UIElements,而不是ContentElements。我更新了代碼以直接調用AddHandler,它將同時適用於UIElements和ContentElements。 – 2010-04-16 16:00:30

+0

另請注意,您可以選擇在InlineUIContainer或其包含的UIElement上設置此事件。這兩種解決方案都會產生相同的結果,但根據代碼的結構如何,其中一種解決方案可能更容易實施。 – 2010-04-16 16:01:38