2010-10-05 64 views
1

我有一個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> 
+0

當詢問特定的內容是否有錯誤(在本例中爲DataTemplate)時,粘貼XAML或代碼總是有幫助的。 – 2010-10-05 13:01:50

回答

1

我設法找到一個解決XAML張貼以上。我不確定它是否可以在我們的應用程序的所有情況下工作,但我還沒有正確地嘗試它們。

無論如何,修復在這篇文章中發現: http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/fa8eb86f-5001-4af6-adb3-ceb0799a0cf3/

基本上,我們增加了 'NAME = 「PART_SelectedContentHost」' 在ControlTemplate中的CachingContentPresenter。根據我的理解,此PART_告訴解析器/編譯器包含控件模板的默認行爲,例如鼠標事件和鍵盤按鈕以及自動化屬性。

+0

爲我工作,謝謝! – Idan 2015-08-09 07:53:52