WPF Calendar Control не слушает клавишу ввода через InputBindings (MVVM) - PullRequest
0 голосов
/ 25 октября 2018

Я пытаюсь прослушать клавишу Enter в управлении календарем через MVVM.Я могу слушать любую другую клавишу, но по какой-то причине не могу войти.Использование кода позади не является решением, так как я хочу связать команду с ViewModel… поэтому, пожалуйста, обработка PreviewKeyDown не сработает.

Это в представлении:

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

Клавиша Escapeработает нормально и вызывает CloseCalendarCommand.Клавиша ввода не запускает команду.До MVVM я использовал PreviewKeyDown = "FilterCalendar_PreviewKeyDown" для обработки клавиши ввода ...

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

, но это идет вразрез с концепцией MVVM, и я хочу сделать другие вещи в viewModel после закрытия всплывающего окна календаря, чтоЯ не могу из кода позади.

В модели представления я использую Команды Prism:

    CloseCalendarCommand = new DelegateCommand(OnCloseCalendarCommand);

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

    public ICommand CloseCalendarCommand { get; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...