我有一個WPF應用程序,主要遵循MVVM,我試圖自動化。ViewModel打破WPF中的UI自動化
在我的一些用戶控件中,我將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>
下面是上述XAML的早期版本。它被允許訪問自動化樹:
<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>
當詢問特定的內容是否有錯誤(在本例中爲DataTemplate)時,粘貼XAML或代碼總是有幫助的。 – 2010-10-05 13:01:50