Stackoverflow.
Я просмотрел большое количество вопросов \ ответов и до сих пор не нашел ключ к проблеме, с которой я сталкиваюсь в Visual UI Automation Verify (2.0).
У меня есть ContextMenu в TreeList (элемент управления DevExpress):
<dxg:TreeListControl.ContextMenu>
<ContextMenu x:Name="TreeListContextMenu" DataContext="{Binding Path=Data, Source={StaticResource Proxy}}" ItemsSource="{Binding Path=Data.SelectedItemContextMenuItemCollection, Source={StaticResource Proxy}}"/>
</dxg:TreeListControl.ContextMenu>
У меня есть простой связующий прокси, такой как этот , объявленный со следующим кодом:
<dataStructures:BindingProxy x:Key="Proxy" Data="{Binding}" />
DataContext пользовательского элемента управления и DataContext в ContextMenu привязаны к свойству Data на прокси-сервере (поскольку ContextMenu не принадлежит одному и тому же визуальному дереву).
В необщем стиле MenuItem I 'm присваивая значение из свойства Data прокси подключенному свойству MenuItem:
<Setter Property="helpers:ParentControlDataContextBindingHelper.ParentControlDataContext" Value="{Binding Path=Data, Source={StaticResource Proxy}}" />
Причина, по которой это делается так:
В дереве есть различные объекты.Каждый объект может иметь свой список элементов ContextMenu, основанный на определенном значении свойства объекта.Я обрабатываю событие «ContextMenuOpening», перенаправляя его в команду:
<i:Interaction.Triggers>
<i:EventTrigger EventName="ContextMenuOpening">
<prism:InvokeCommandAction Command="{Binding ContextMenuOpeningCommand}"/>
</i:EventTrigger>
<i:Interaction.Triggers/>
В команде ContextMenuOpeningCommand я очищаю, а затем заполняю SelectedItemContextMenuItemCollection (который состоит из визуальных моделей MenuItem - источников привязки для заголовка,Команда и значок для MenuItem), основанные на свойстве SelectedItem
Когда контекстное меню вызывается первый раз - оно появляется в Visual UI Automation Verify (с правильными заголовками ContextMenuItem), но не можетпроверяться после его закрытия - его содержимое в Visual UI Automation Verify является DisconnnectedItems.Если я вызываю следующее ContextMenu для элемента другого типа, а список элементов ContextMenu отличается - проверка автоматизации пользовательского интерфейса не показывает даже заголовки элементов меню (заголовки пусты, поскольку DataContext элемента меню - DisconnectedItem после закрытия меню),Если я использую «жестко закодированное» ContextMenu со всеми привязками и элементами в XAML - все в порядке.
Я не уверен, является ли это поведение на самом деле разработанным или нет.Можно ли протестировать ContextMenu с коллекцией нестатических элементов с помощью Visual UI Automation Verify?Inspect.exe в WindowsKits ведет себя так же.Что важнее - как я могу обойти это, чтобы иметь возможность тестировать меню с VisualUIAVerify?