WPF DataGrid 输入键绑定在一段时间后停止工作?
WPF DataGrid Input key binding stops working after a while?
您好,我在 WPF DataGrid 上有两个输入键绑定,按下键时会调用相应的命令,如下所示:
<DataGrid Grid.Row="1" IsReadOnly="False" Focusable="True"
AutoGenerateColumns="False" CanUserReorderColumns="False" CanUserDeleteRows="False"
EnableColumnVirtualization="False" EnableRowVirtualization="False" SelectionMode="Single"
ItemsSource="{Binding Path=QueryClauses}"
SelectedIndex="{Binding Path=SelectedQueryClauseIndex}">
<DataGrid.InputBindings>
<KeyBinding Key="Insert" Command="{Binding DataContext.InsertQueryClause, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid}}"/>
<KeyBinding Key="Delete" Command="{Binding DataContext.DeleteQueryClause, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid}}"/>
</DataGrid.InputBindings>
...
</DataGrid>
开始时完美运行,但在可编辑的 DataGrid 上 editing/deleting 一段时间后,“Insert/Delete”命令停止工作,我在命令中调试,命令从不被触发,这意味着 DataGrid 以某种方式丢失了对键盘输入绑定的跟踪。
我搜索了一下,发现有人遇到了类似的问题:
https://social.msdn.microsoft.com/Forums/vstudio/en-US/0cdabbe0-b96f-43a2-bcb0-842d1766c2c7/why-does-my-inputbinding-stop-working?forum=wpf
post 解释说控件失去了绑定,因为它以某种方式看到 e.handled = true,因此输入被绕过。
但是,这个 post 没有说明如何修复它,所以有人对此有任何想法吗?
谢谢!
检查了其他 post,似乎设置以下 属性 解决了问题:
Focusable="True"
谢谢。
您好,我在 WPF DataGrid 上有两个输入键绑定,按下键时会调用相应的命令,如下所示:
<DataGrid Grid.Row="1" IsReadOnly="False" Focusable="True"
AutoGenerateColumns="False" CanUserReorderColumns="False" CanUserDeleteRows="False"
EnableColumnVirtualization="False" EnableRowVirtualization="False" SelectionMode="Single"
ItemsSource="{Binding Path=QueryClauses}"
SelectedIndex="{Binding Path=SelectedQueryClauseIndex}">
<DataGrid.InputBindings>
<KeyBinding Key="Insert" Command="{Binding DataContext.InsertQueryClause, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid}}"/>
<KeyBinding Key="Delete" Command="{Binding DataContext.DeleteQueryClause, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid}}"/>
</DataGrid.InputBindings>
...
</DataGrid>
开始时完美运行,但在可编辑的 DataGrid 上 editing/deleting 一段时间后,“Insert/Delete”命令停止工作,我在命令中调试,命令从不被触发,这意味着 DataGrid 以某种方式丢失了对键盘输入绑定的跟踪。
我搜索了一下,发现有人遇到了类似的问题: https://social.msdn.microsoft.com/Forums/vstudio/en-US/0cdabbe0-b96f-43a2-bcb0-842d1766c2c7/why-does-my-inputbinding-stop-working?forum=wpf
post 解释说控件失去了绑定,因为它以某种方式看到 e.handled = true,因此输入被绕过。
但是,这个 post 没有说明如何修复它,所以有人对此有任何想法吗?
谢谢!
检查了其他 post,似乎设置以下 属性 解决了问题:
Focusable="True"
谢谢。