2010-06-20 46 views
5

我有,我已經定義了使用密鑰手勢按Ctrl +按Ctrl +自定義命令WPF應用程序。我的窗口有一個TextBoxScrollViewerTextBox具有焦點按Ctrl +按Ctrl +將光標移動到下一個或前一個單詞,這是很好的開始。製作的ScrollViewer不能捕捉控制左,控制權在WPF

但在ScrollViewer它使水平滾動的舉動,就好像我剛剛按下。什麼是允許按Ctrl +按Ctrl +事件冒泡從我ScrollViewer到窗前,Command定義的最簡單的方法?

回答

4

所以我做了以下

public class MyScrollViewer : ScrollViewer 
{ 
    protected override void OnKeyDown(KeyEventArgs e) 
    { 
     if (e.KeyboardDevice.Modifiers == ModifierKeys.Control) 
     { 
      if (e.Key == Key.Left || e.Key == Key.Right) 
       return; 
     } 
     base.OnKeyDown(e); 
    } 
} 

我認爲,關鍵是要了解該事件在頂部開始,工作是一路下滑得到了這個工作。然後在備份每一個「層」的過程中檢查句柄布爾值,如果沒有設置爲true,它將確定它是否會執行某些操作,如果是,則進行設置。我需要爲我的快捷方式短路這種行爲,以便Handled在它恢復到Window級別時仍然是錯誤的。

+0

完美。謝謝! +1 – 2012-10-10 05:35:58

3

必須覆蓋ScrollViewerPreviewKeyDown事件,並e.Handled = true和使用類似(this.Parent as FrameworkElement).RaiseEvent(e);該事件傳遞給家長,如果按下鍵是你分配給你的命令的按鍵組合之一。

+0

這是滾動查看器(在WPF中)的正確答案。 OnKeyDown事件不會在箭頭鍵上觸發,但是這樣做。謝謝! – 2016-02-26 17:04:56