1

ウィンドウ内に Microsoft リボンバーがあり、すべてのリボン ボタンは次のような特定のコマンドに関連付けられています。

<ribbon:Ribbon x:Key="MyToolbar"  Name="MyToolbar"  >         
<ribbon:RibbonTab Header="File" >
<ribbon:RibbonGroup Header="File"  >
<ribbon:RibbonButton Command="{x:Static ApplicationCommands.New}"  LargeImageSource="Images/GenericDocument.png" Label="Nuovo" />
<ribbon:RibbonButton Command="{x:Static ApplicationCommands.Open}" SmallImageSource="Images/OpenFolder.png" Label="Apri"  />
</ribbon:RibbonGroup>
</ribbon:RibbonTab>
</ribbon:Ribbon>

この方法で、同じウィンドウに配置された特定の Canvas オブジェクトのコード ビハインドにコマンドを処理しています。

private void BindApplicationCommands()
{
// FILE group
this.CommandBindings.Add(new CommandBinding(ApplicationCommands.New, New_Executed));
this.CommandBindings.Add(new CommandBinding(ApplicationCommands.Open, Open_Executed,Open_Enabled));
}

ハンドリングコードが配置されている Canvas コンポーネントの外側をクリックすると、リボン内のすべてのボタンが無効になります。クリックした場所に関係なく、特定のボタン(「新規」コマンドや「開く」コマンドなど) を常にグローバルに有効にしたいので、これは望ましくない動作です。どうすればこれを達成できますか? ご提案いただきありがとうございます。

4

1 に答える 1

1

わかりました、私は自分の問題を解決しました。CommandBindingsはCanvasコンポーネント内で定義されているため、より広い(グローバル)コンテキストで管理できなかったため、実行/アクティブ化をより柔軟な方法で委任するために、それらをウィンドウコードビハインドに移動しました。それで全部です :)

于 2010-10-19T09:12:20.047 に答える