1

我在 Window 中有一个 Microsoft Ribbonbar,每个 RibbonButton 都与一个特定的命令相关联,如下所示:

<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

好的,我解决了我自己的问题。由于在 Canvas 组件内定义的 CommandBindings 无法在更广泛的(全局)上下文中进行管理,因此我将它们移动到 Window 代码隐藏中,以便以更灵活的方式委派它们的执行/激活。就这样 :)

于 2010-10-19T09:12:20.047 回答