Как заставить RibbonButton быть всегда включенным?

У меня есть 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, где размещен код обработки, все кнопки внутри ленты становятся отключенными. Это нежелательное поведение, так как я хочу, чтобы некоторые определенные кнопки (например, команды "Создать" и "Открыть") были всегда и глобально включены, несмотря на то, где я нажимаю. Как мне этого добиться? Заранее спасибо за любое предложение.

1 ответ

Решение

Хорошо, я решил свою проблему. Поскольку привязки CommandBindings определены внутри компонента Canvas, они не могут быть использованы в более широком (глобальном) контексте, поэтому я переместил их в код окна, чтобы делегировать их выполнение / активацию более гибким способом. Это все:)

Другие вопросы по тегам