2012-02-02 21 views
0

私はがContentPresenterを含むDataTemplateによって定義されているTabControlを持っています。マッピングUIElementクラスは、特定のViewModelタイプのDataTemplateによって定義されます。それはそのように動作します:TabControlからContentTemplateのインスタンス化されたUIElementを取得する

<UserControl.Resources> 
     <DataTemplate DataType="{x:Type ViewModels:DiagramVM}"> 
      <Controls:Diagram DataContext="{Binding}" x:Name="diagram"/> 
     </DataTemplate> 
</UserControl.Resources> 

<TabControl ItemsSource="{Binding Path=Tabs, Mode=TwoWay}" SelectedIndex="{Binding Path=SelectedTabIndex}" 
          x:Name="AnalysisTabCtrl" Template="{DynamicResource ScrollableTabControlTemplate}"> 
    <TabControl.ItemTemplate> 
        <DataTemplate> 
         <Label Content="{Binding Path=Header}"/> 
        </DataTemplate> 
    </TabControl.ItemTemplate> 
    <TabControl.ContentTemplate> 
        <DataTemplate> 
         <ContentPresenter Content="{Binding Path=ViewModel}"/> 
        </DataTemplate> 
    </TabControl.ContentTemplate> 
</TabControl> 

私の問題は、私はインスタンス化されたUIElementsのインスタンスが必要です。この場合、のインスタンス。どうすれば入手できますか?

答えて

1

あなたは、あなたが名前のインスタンス化のコントロールを検索するためにTabItem.ContentTemplateFindNameを使用することができ、あなたのTabControlのうちTabItemを取得するためにItemsControl.ItemContainerGeneratorを使用することができます。 (ここではおそらくコンテンツプレゼンターに名前をつけて、再びContentTemplateで検索する必要があります)

このようなことはお勧めできません。これを使わないと管理できない場合は、関連するすべてのプロパティをバインドしていない可能性がありますアイテム。

関連する問題