无法让加速键与 WPF 单选按钮一起使用 [英] Can't get accelerator key to work with WPF radio button

查看:28
本文介绍了无法让加速键与 WPF 单选按钮一起使用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试为位于选项卡项内的网格内的 WPF 单选按钮分配快捷方式.我尝试简单地使用下划线字符,如图所示,它用字母F"上的下划线标记标签;但是当发送键Alt+f"时它根本不会选择单选按钮.

I am trying to assign a shortcut to a WPF radio button which is inside a grid which is inside a tab item. I tried simply using the underline character as shown which marks the label with an underline on the letter "F" but when sending the keys "Alt+f" it simply will not select the radio button.

    <RadioButton Name="DesktopRadioButtonFlags" Content="_Flags" HorizontalAlignment="Left" 
   Margin="39,39,0,0" Foreground="White" VerticalAlignment="Top" FlowDirection="RightToLeft"/>

推荐答案

你应该使用输入绑定

xml

<Window.InputBindings>
    <KeyBinding Modifiers="Alt" Key="F" Command="{Binding CheckRadioButton1Command}"/>
</Window.InputBindings>
<Grid>
    <RadioButton Content="_Flags" IsChecked="{Binding IsRadioChecked}"/>
</Grid>

视图模型

public class MyViewModel : INotifyPropertyChanged
{
    private bool _isRadioChecked;
    public bool IsRadioChecked
    {
        get => _isRadioChecked;
        set
        {
            if (_isRadioChecked == value)
                return;

            _isRadioChecked = value;
            OnPropertyChanged(nameof(IsRadioChecked));
        }
    }

    private ICommand _checkRadioButton1Command;
    public ICommand CheckRadioButton1Command => _checkRadioButton1Command ?? (_checkRadioButton1Command = new ActionCommand(CheckRadioButton1));

    private void CheckRadioButton1()
    {
        IsRadioChecked = true;
    }

    public event PropertyChangedEventHandler PropertyChanged;
    protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}

控件或windows代码将ViewModel设置为DataContext(您应该将初始数据传递给windows或控件构造函数)

control or windows code to set ViewModel as DataContext (you should pass your initial data to windows or control constructor)

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        DataContext = new MyViewModel();
    }
}

这篇关于无法让加速键与 WPF 单选按钮一起使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆