我在WPF应用程序中设置了一个InputBinding,沿着了一个DatePicker和一个TextBox。
当我在焦点不在DatePicker上的情况下按下Enter键时,我的KeyBinding事件被触发。
当焦点在DatePicker上时,将执行DatePicker的验证。验证后,既不执行KeyDown也不执行KeyBinding命令。
我怀疑DatePicker-TextBox将“Handled”设置为true。
有什么方法可以让我从DatePicker访问验证功能吗?
<Window.InputBindings>
<KeyBinding Key="Enter" Command="{Binding EnterCommand}" />
</Window.InputBindings>
<Grid>
<StackPanel>
<DatePicker
KeyDown="DatePicker_KeyDown"
PreviewKeyDown="DatePicker_PreviewKeyDown" />
<TextBox Height="20" />
</StackPanel>
</Grid>
字符串
WPF datagrid with datepicker in cell blocks the enter key
使用这个CustomDatePicker,我可以将Handled更改为false。
但是如果第一次按下Enter键启动验证并将“Handled”设置为true,第二次按下Enter键将启动KeyBinding事件,则会更好。
有没有办法做到这一点?
1条答案
按热度按时间46qrfjad1#
如果你想在每次按下Enter键时调用
EnterCommand
,而不管当前哪个控件拥有焦点以及该控件是如何实现的,你应该处理PreviewKeyDown
事件,而不是使用KeyBinding
:字符串
这与您当前使用
KeyBinding
的解决方案完全一样符合MVVM,但它工作得更好(取决于您的需求)。