Можно ли отключить обновление страницы при нажатии клавиши «F5» с помощью WPF Modern UI Framework с первого этажа? - PullRequest
0 голосов
/ 28 ноября 2018

Работа над старым приложением от моего предшественника, которое использует современный пользовательский интерфейс на первом этаже.Довольно случайно мы обнаружили, что фреймворк пытается обновить текущую страницу, когда пользователь нажимает клавишу F5 для повторной инициализации соответствующей ViewModel.Однако, поскольку конструктор вызывает несколько вещей, это приводит к неопределенному поведению приложения.Кроме того, приложение использует Oxyplot, что также приводит к проблемам с привязкой данных между PlotView и PlotModel в ViewModel.

То, что я пробовал до сих пор:

  • Просматривая исходный код фреймворка до сих пор, я не смог найти, где инициируется обновление или как его предотвратить.
  • Я пытался назначить клавишу F5 для другой функции, в данном случае в качестве ярлыка для другой страницы, например:

    <mui:ModernWindow.InputBindings>
        <KeyBinding Command="{Binding Path=OpenManualCommand}" Key="F5 > 
       </KeyBinding>
    </mui:ModernWindow.InputBindings>
    
  • Я нашел проблему на странице github фреймворка, описывающую в значительной степени проблему, с которой я столкнулся .Тем не менее, он не получил никаких ответов, а с 2016 года, вероятно, не получит.

  • Использование события KeyDown и маркировка его как обработанного так:

    private void UserControl_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.F5)
        {
            e.Handled = true;
        }
    }
    

    Это на самом деле работает, однако мне придется выполнять одну и ту же операцию для каждоговид, поскольку это не сработает, если я сделаю это только из MainWindow.Не кажется хорошим решением для меня.

Есть ли другой способ, который позволил бы мне отключить функцию клавиши F5 в этом фреймворке?

...