Как настроить таргетинг на несфокусированные DataGrid с помощью RoutedCommands, если они находятся в разных регионах Prism? - PullRequest
0 голосов
/ 09 мая 2020

Я столкнулся с этой проблемой в течение пары недель и надеюсь, что смогу получить несколько предложений. У меня есть 2 региона Prism. Область панели инструментов, которая содержит ToolbarView (элемент управления ToolBarTray) и область содержимого, содержащую DataGridView (элемент управления DataGrid).

regions

Моя область панели инструментов имеет различные 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. Мы будем благодарны за любые предложения.

1 Ответ

0 голосов
/ 09 мая 2020

Я рассматривал возможность использования IEventAggregator, но мне кажется, что это противоречит цели использования RoutedCommands.

Совершенно верно, и это хорошо. Прямо сейчас, как ваши тесты ищут эту установку? Думаю, их нет. Если модель представления панели инструментов взаимодействует с моделью представления сетки данных через некоторый код (в отличие от xaml, это может быть IEventAggregator или какой-либо другой сервис, или они могут быть тем же экземпляром ), это будет будет намного проще написать набор тестов.

Мой совет - сбросить перенаправленные команды.

...