gpt4 book ai didi

c# - 如何将 UserControl 的 KeyBinding 传递给其父级?

转载 作者:行者123 更新时间:2023-11-30 22:27:57 24 4
gpt4 key购买 nike

我创建了一个小的 OKCancelControl 并且我想在用户按下 EnterEscape 时绑定(bind)一个命令

这是 XAML

<UserControl.InputBindings>
<KeyBinding Key="Enter"
Command="{Binding ElementName=this, Path=OkCommand, UpdateSourceTrigger=PropertyChanged}"/>

<KeyBinding Key="Escape"
Command="iw:InnerWindow.CancelCommand"/>
</UserControl.InputBindings>

<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Border Grid.Column="0"
Style="{StaticResource BorderStyle}">
<Button Content="{Binding ElementName=this, Path=ButtonName, UpdateSourceTrigger=PropertyChanged}"
Command="{Binding ElementName=this, Path=OkCommand, UpdateSourceTrigger=PropertyChanged}"/>
</Border>

<Border Grid.Column="1"
Style="{StaticResource BorderStyle}">
<Button Content="{Binding Source={x:Static Member=t:BaseText.Cancel}}"
Command="iw:InnerWindow.CancelCommand" />
</Border>
</Grid>

但是 KeyBinding 只有在我的 UserControl 有焦点时才会被处理,这对我来说并不好。

我想找到一种 MVVM 或 XAML 方式(如果可能的话)让父级“监听”用户按键。

提前谢谢你;)

最佳答案

使用 Enter 和 Escape 的确定和取消按钮是 Windows 长期以来标准化的东西,因此有一个内置的解决方案。您不需要为命令设置单独的键绑定(bind),因为您可以设置按钮以遵守这些键。

要使 WPF 按钮在您按下回车键时“按下”,请在按钮的 Xaml 中设置 IsDefault="True"。同样,设置 IsCancel="True" 将导致在您按下 Escape 键时按下按钮。

无论控件的焦点如何,这两个键都应该可以在事件窗口中的任何位置使用。值得注意的是,如果您的窗口中有多个默认或取消按钮,则行为可能无法预测。

关于c# - 如何将 UserControl 的 KeyBinding 传递给其父级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11053945/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com