2010-10-19 4 views
1

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

ответ

1

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

+0

Несмотря на то, что вы были тем, кто отвечал на вопрос, вы все равно должны отметить это как ответ. –

+0

Я буду, когда система позволит мне это. Перед тем, как я смогу это сделать, вам нужно ограничить 2 дня ожидания (для моего профиля). – NinjaCross

Смежные вопросы