2009-05-02 57 views
3

Office 2007和Ribbon介紹了「Key Tips」的概念。WPF中的重要提示

總之,在 功能區的每一個命令收到一封信,你可以 按激活該命令。 ... 這些字母用小標記 「KeyTips」表示按 的字母來激活控件。 KeyTips 使用Alt鍵顯示,因此使用它們的 與Windows中的菜單 的導航方式類似。

(來源:http://blogs.msdn.com/jensenh/archive/2006/04/12/574930.aspx

密鑰提示的示例可以示出如下。在該圖中,用戶按下了ALT鍵,正在等待進一步的輸入。

Key Tips Example in Word 2007 http://blogs.msdn.com/blogfiles/outlook/WindowsLiveWriter/RibbonKeyTips_8F7C/clip_image002_thumb.jpg

是否有 「重要提示」 中的任何WPF開源的例子嗎?

你會如何以通用的方式實現類似於這個功能的東西(即不需要功能區)?你將如何使用MVVM模式實現這一點(假定ICommand不支持InputBindings)。

注意:ActiPro在實現Ribbon時已實現此功能,但它們尚未發佈源代碼。

回答

2

首先,您可以在Microsoft的WPF工具包中查看Ribbon Preview

或者,一個一般的方法是這樣的:

  1. 請在您會引發的,就像你IsShowingKeyTips窗口/頂層控制DependencyProperty。如果您認爲合適,請抓住鍵盤輸入來翻轉。

  2. 使ContentControl具有兩個依賴屬性,如1)IsShowingKeyTip和2)KeyTipText。我們稱之爲KeyTipContentControl

  3. 編輯ContentControlControlTemplate看看你想要的。將其設爲Canvas或您最喜歡的佈局容器,使用一些綁定來正確調整大小,也許會輸入一些負值Margin值。

  4. 如果您想看中,請使用一些AttachedProperties,如KeyTip.Text,將它們從普通控件泡泡到KeyTipContentControl

  5. 在您的XAML中,將ContentControls放在Controls的周圍,您需要啓用KeyTips。根據需要設置綁定。

你會用在最頂層是這樣結束:

<Window ... > 
    <code:KeyTipContentControl 
    KeyTipText="A" 
    IsShowingKeyTip="{Binding IsShowingKeyTips}"> 
    <Button x:Name="MyButtonWithKeyTip" ... /> 
    </code:KeyTipContentControl> 
</Window> 

要處理的按鍵優雅的方式是不是我爲現在。 :-)

+0

你好@exclsr。我有一個問題,即重要提示必須以分層方式工作,這意味着它可以具有多級KeyTips。你能幫我解決這個問題嗎? – 2015-11-20 07:10:08

+0

嗨@ MR.LB,謝謝你的提問。我建議打開一個新的堆棧溢出問題。祝你好運。 – exclsr 2015-12-12 04:48:20