使用 NavigationCommands.Refresh 扩展 WPF 工具包 DataGridControl

Extended WPF Toolkit DataGridControl with NavigationCommands.Refresh

在我的 WPF 应用程序中,我想将用户 F5 笔划作为刷新处理。为了实现这一点,我决定使用 NavigationCommands.Refresh 命令。

在 UI 中,我使用 Extended WPF Toolkit 中的 DataGridControl。问题:只要焦点位于数据网格内,就不会触发刷新命令处理程序。

这可以用一个非常小的样本来证明:

<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;
    }
}

复制:

所以问题是,当用户在焦点位于 DataGridControl 内时按 F5 时,我如何确保执行我的刷新处理程序?

好的,我终于找到了解决方案。

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

DataGridControl.IsRefreshCommandEnabled 属性 设置为 False 可阻止 datagridcontrol 将 F5 键用于其内部逻辑。然后按预期调用处理程序。