2009-05-02 19 views
3

Office 2007とリボンでは、 "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 ToolkitのRibbon Previewをチェックアウトすることができます。

あるいは、一つの一般的なアプローチは次のようになります:

  1. あなたはIsShowingKeyTipsのように、のオフにトリガすることができますウィンドウ/トップレベルコントロールでDependencyPropertyを行います。キーボード入力をキャッチして、必要に応じてこれを反転します。

  2. IsShowingKeyTipと2)KeyTipTextのような2つの依存性プロパティを持つContentControlを作成します。これをKeyTipContentControlとしましょう。

  3. ContentControlControlTemplateを編集してください。それをCanvasまたはお気に入りのレイアウトコンテナにして、いくつかのバインディングを使用して適切にサイズを変更します。おそらく、負のMarginの値をスローします。

  4. のようなものをKeyTip.TextのようにプレーンコントロールからKeyTipContentControlにバブルアップしてください。

  5. XAMLでは、ContentControlsをに置き、キーチップを使用します。適切なバインディングを設定します。

あなたは、トップレベルでこのようなものになってしまいます:

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

エレガントなファッションでキーを押しを扱うために、私は今のためにアップしてるものではありません。 :-)

+0

こんにちは@exclsrを使用しています。キーヒントは階層的な方法で動作しなければならないという質問があります。つまり、複数レベルのキーヒントを持つことができます。このアプローチに従った解決策を教えてください。 –

+0

こんにちはMR.LB、ご質問ありがとうございます。 Stack Overflowの新しい質問を開くことをお勧めします。あなたの検索で幸運。 – exclsr

2

だけFluent Ribbon Control Suite(それは&が必要なすべての機能をサポートしています。無料です)

+0

リンクありがとう!問題は、どのリボンを使用するのかということではなく、実際にはどのリボンの実装からも分離してKeyTipsを作成する方法であることに注意してください。つまり、これはKeyTipsのオープンソース実装であり、そのため、これは有用な答えです。 –

+0

このリンクは質問に答えるかもしれませんが、答えの本質的な部分をここに含めて参考にしてください。リンクされたページが変更された場合、リンクのみの回答は無効になります。 - [レビューから](/レビュー/低品質の投稿/ 17902642) – Saranjith