WPF日历控件不通过InputBindings(MVVM)监听Enter键

时间:2018-10-25 12:55:11

标签: wpf mvvm calendar

我正在尝试通过MVVM监听日历控件中的Enter键。由于某种原因,我能够收听其他任何键,但无法听回车键。后面使用代码不是解决方案,因为我想使用ViewModel进行命令绑定…所以请不要使用PreviewKeyDown。

这在视图中:

    <Calendar SelectionMode="SingleRange">
        <Calendar.InputBindings>
            <KeyBinding Key="Return"
                        Command="{Binding CloseCalendarCommand}" />
            <KeyBinding Key="Esc"
                        Command="{Binding CloseCalendarCommand}" />
        </Calendar.InputBindings>
    </Calendar>

Escape键可以正常工作,并触发CloseCalendarCommand。 Enter键不会触发命令。在MVVM之前,我使用PreviewKeyDown =“ FilterCalendar_PreviewKeyDown”处理Enter键...

    private void FilterCalendar_PreviewKeyDown(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.Enter)
        {
            e.Handled = true;
            CalendarPopup.IsPopupOpen = false;
        }
    }

但是这与MVVM概念背道而驰,一旦日历弹出窗口关闭,我想在viewModel中做其他事情,我无法从后面的代码中获取

在视图模型中,我正在使用棱镜命令:

    CloseCalendarCommand = new DelegateCommand(OnCloseCalendarCommand);

    private void OnCloseCalendarCommand()
    {
        IsCalendarVisible = false;
    ...
    }

    public ICommand CloseCalendarCommand { get; }

0 个答案:

没有答案