在我的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 - 处理程序未执行所以问题是,当用户按下F5而焦点在DataGridControl
范围内时,如何确保执行刷新处理程序?
答案 0 :(得分:0)
好的,我终于偶然发现了解决方案。
https://xceed.com/forums/topic/what-is-the-function-key-F5-in-datagrid-for/
将DataGridControl.IsRefreshCommandEnabled
属性设置为False
会阻止datagridcontrol使用F5键作为其自己的内部逻辑。然后按预期调用处理程序。