В моем приложении WPF я хочу обрабатывать удары пользователя F5 как обновление. Чтобы архивировать это, я решил использовать команду NavigationCommands.Refresh
.Расширенный WPF Toolkit DataGridControl с NavigationCommands.Refresh
Внутри пользовательского интерфейса я использую DataGridControl
от Extended WPF Toolkit. Проблема: всякий раз, когда фокус находится в сетке данных, обработчик команды обновления не запускается.
Это может быть продемонстрировано с очень небольшой выборке:
<Window x:Class="WpfTests.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:xd="http://schemas.xceed.com/wpf/xaml/datagrid">
<Window.CommandBindings>
<CommandBinding Command="NavigationCommands.Refresh" Executed="CommandBinding_Executed" CanExecute="CommandBinding_CanExecute"/>
</Window.CommandBindings>
<StackPanel>
<TextBox Text="Click me to get the focus out of DataGridControl"/>
<xd:DataGridControl/>
</StackPanel>
</Window>
Ничего особенного происходит в коде позади, я просто использовать его, чтобы поместить точки останова в обработчике:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void CommandBinding_Executed(object sender, ExecutedRoutedEventArgs e)
{
e.Handled = true;
}
private void CommandBinding_CanExecute(object sender, CanExecuteRoutedEventArgs e)
{
e.CanExecute = true;
e.Handled = true;
}
}
ВОПРОИЗВЕДЕНИЕ:
- Start Application, нажать F5 - обработчик выполнен
- Нажмите на
DataGridControl
область, нажмите клавишу F5 - обработчик не выполняется - Нажмите на текстовое поле, нажмите клавишу F5 - обработчик выполняется
Таким образом, вопрос, как я могу гарантировать, что мой обработчик обновления выполняется, когда пользователь нажимает F5, а фокус находится в пределах DataGridControl
?