2016-11-03 2 views
0

В моем приложении 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?

ответ

0

Хорошо, я, наконец, наткнулся на решение.

https://xceed.com/forums/topic/what-is-the-function-key-F5-in-datagrid-for/

Установка DataGridControl.IsRefreshCommandEnabled свойства False останавливает datagridcontrol от потребления клавиши F5 для своей внутренней логики. Затем обработчик называется ожидаемым.

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