使用 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;
}
}
复制:
- 启动应用程序,按 F5 - 执行处理程序
- 点击进入
DataGridControl
区域,按F5-不执行处理程序
- 单击文本框,按 F5 - 执行处理程序
所以问题是,当用户在焦点位于 DataGridControl
内时按 F5 时,我如何确保执行我的刷新处理程序?
好的,我终于找到了解决方案。
https://xceed.com/forums/topic/what-is-the-function-key-F5-in-datagrid-for/
将 DataGridControl.IsRefreshCommandEnabled
属性 设置为 False
可阻止 datagridcontrol 将 F5 键用于其内部逻辑。然后按预期调用处理程序。
在我的 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;
}
}
复制:
- 启动应用程序,按 F5 - 执行处理程序
- 点击进入
DataGridControl
区域,按F5-不执行处理程序 - 单击文本框,按 F5 - 执行处理程序
所以问题是,当用户在焦点位于 DataGridControl
内时按 F5 时,我如何确保执行我的刷新处理程序?
好的,我终于找到了解决方案。
https://xceed.com/forums/topic/what-is-the-function-key-F5-in-datagrid-for/
将 DataGridControl.IsRefreshCommandEnabled
属性 设置为 False
可阻止 datagridcontrol 将 F5 键用于其内部逻辑。然后按预期调用处理程序。