Я столкнулся с этой проблемой в течение пары недель и надеюсь, что смогу получить несколько предложений. У меня есть 2 региона Prism. Область панели инструментов, которая содержит ToolbarView (элемент управления ToolBarTray) и область содержимого, содержащую DataGridView (элемент управления DataGrid).
Моя область панели инструментов имеет различные RoutedCommands, которые выполняют команды в DataGrid
<ToolBar ClipToBounds="False">
<Button Command="{x:Static ApplicationCommands.Undo}"
Content="Undo"/>
<Button Command="{x:Static ApplicationCommands.Redo}"
Content="Redo"/>
<Button Command="{x:Static local:CustomDataGrid.FooCommand}"
Content="Foo"/>
</ToolBar>
Когда мой DataGrid не имеет фокуса клавиатуры, кнопки Undo, Redo и Foo будут отключены. Когда я нажимаю на ячейку DataGrid, они снова включаются. Отключение этих кнопок, когда DataGrid теряет фокус клавиатуры, может сбивать с толку, а иногда и расстраивать. (Пример: при удалении строки DataGrid теряет фокус клавиатуры, что отключает все кнопки). Могу ли я что-нибудь сделать, чтобы гарантировать, что Undo / Redo и Foo останутся активными и будут работать в DataGrid? Я рассматривал возможность использования IEventAggregator, но мне кажется, что это противоречит цели использования RoutedCommands. Мы будем благодарны за любые предложения.