在我的WPF應用程序中,我想將用戶F5筆畫作爲刷新處理。爲了達到這個目的,我決定利用NavigationCommands.Refresh
命令。使用NavigationCommands.Refresh擴展WPF工具包DataGridControl
在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鍵?