У меня есть приложение WPF, которое в основном следует MVVM, которое я пытаюсь автоматизировать.
В некоторых моих пользовательских элементах управления я привязываю свойство Content к ViewModel другого пользовательского элемента управления. Существует определенный шаблон данных, который сопоставляет ViewModel с правильным представлением для отображения на экране.
Это прекрасно работает, когда приложение запускается пользователем, но если я пытаюсь просмотреть дерево автоматизации в UISpy или другом инструменте, оно всегда останавливается на ViewModel.
Я нашел эту проблему во многих местах. Есть ли способ сообщить ViewModel, чтобы отображать любые свойства автоматизации под ним в дереве? или я неправильно определяю шаблон данных?
Заранее спасибо, Донал
РЕДАКТИРОВАТЬ: Вот пример XAML, взятый из приложения. Он блокирует доступ к дереву автоматизации. Он помещается внутри RibbonWindow.
<TabControl Grid.Column="2"
cal:RegionManager.RegionName="{x:Static Regions:RegionNames.MainRegion}"
Name="tabControlMain"
SelectedValuePath="Name">
<TabControl.Template>
<ControlTemplate TargetType="TabControl">
<Grid>
<TabPanel IsItemsHost="True" Visibility="Hidden" />
<Border BorderBrush="{DynamicResource BorderBrush}" Background="White" BorderThickness="1">
<framework:CachingContentPresenter
ItemsSource="{Binding Items, ElementName=tabControlMain}"
ContentTemplateSelector="{framework:MvvmTemplateSelector}"
ContentSource="SelectedContent" />
</Border>
</Grid>
</ControlTemplate>
</TabControl.Template>
Below is a previous version of the above XAML. It was allowing access to the automation tree:
<TabControl
Grid.Column="2"
Padding="0"
cal:RegionManager.RegionName="{x:Static Regions:RegionNames.MainRegion}"
Name="tabControlMain"
TabStripPlacement="Bottom"
SelectedValuePath="Name"
ItemContainerStyle="{StaticResource TabItemStyle}">
</TabControl>
Где TabItemStyle:
<Style TargetType="{x:Type TabItem}" x:Key="TabItemStyle">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TabItem">
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>