После дальнейших экспериментов я наткнулся на проблему и обнаружил супер простое повторение, которое демонстрирует причину сбоя, а также проверяет нашу работу.
Преступник - это кнопочный элемент управления со следующей настройкой свойства:
FocusVisualPrimaryBrush="{x:Null}"
Чтобы воспроизвести проблему:
- создайте совершенно новый универсальный проект Windows типа Blank App (Universal Windows)
- и добавьте кнопку в существующуюУправление сеткой
<Button HorizontalAlignment="Center" Width="100" Height="100" FocusVisualPrimaryBrush="{x:Null}" />
Обратите внимание, что если вы начнете отладку нажатием клавиши F5, вы можете не увидеть ошибку.Однако, если вы запускаете без отладки, нажимая Ctrl-F5, новое приложение вылетает через несколько секунд после запуска.
Наше приложение использует Eye Control, поэтому видимый прямоугольник фокуса вокруг первого элемента управления в порядке вкладок отвлекаетпоэтому я установил FocusVisualPrimary в окне «Свойства» на «Нет кисти», который был источником значения {x: Null} в определении Xaml для кнопки.
В качестве обходного пути я смог изменитьодна строка:
<Button HorizontalAlignment="Center" Width="100" Height="100" FocusVisualPrimaryBrush="Transparent" />
и прямоугольник фокуса не отвлекал и приложение перестало падать.
В качестве продолжения я искал в моем коде все вхождения установленного FocusVisualPrimaryBrushв Null и обнаружил в приложении несколько других случаев, которые могли произойти из-за копирования / вставки оригинальной кнопки.Помимо сбоя при запуске, я также обнаружил, что вкладка для элемента управления, для которого FocusVisualPrimaryBrush установлено в значение Null, также вызовет внезапный сбой приложения.С тех пор я удалил или заменил все вхождения "{x: Null}" на "Прозрачный".