Принудительно использовать x: имя для определенных пользовательских элементов управления?
Мой отдел начал использовать Ranorex для автоматического тестирования GUI около года назад. Чтобы работать корректно, Ranorex должен будет идентифицировать определенные UserControls, для которых мы используем событие PreBuild в наших проектах, которое гарантирует, что в основном каждый элемент XAML получает уникальный тег x:Uid:
"$ (MSBuildBinPath) \ MSBuild.exe" / p: конфигурация =$(имя_конфигурации) /p: платформа =$(имя_платформы) /t:updateuid "$(ProjectPath)" > NUL
Хотя это текущее решение работает, оно имеет два недостатка, которые мне не нравятся: 1. Каждый элемент получает тег x:Uid, даже те, которым он никогда не понадобится (около 80% XAML). 2. Если x:Name не было определено для элемента, то AutomationId получит общее имя, такое как "TextBox_1", "TextBox2_", "TextBox3_", ... от msbuild.exe, что иногда затрудняет работу тестировщиков. определить правильный UserControl при создании своих тестов.
Нам было бы лучше, если бы мы могли заставить Visual Studio принудительно использовать x:Name для определенных типов UserControl. В 99% всех случаев наши тестеры используют только пользовательские элементы управления, которые используются для ввода данных пользователем, такие как, например, TextBox, ComboBox и CheckBox. Я знаю, что это одна из приятных частей WPF, которая не требует x:Name, но в нашем случае это действительно имеет смысл, поэтому остается вопрос:
Есть ли способ заставить Visual Studio принудительно использовать x:Name?