0

を含むによって定義されるTabControlがあります。マッピングクラスは、特定の ViewModel タイプの によって定義されます。それは次のように機能します:ContentTemplateDataTemplateContentPresenterUIElementDataTemplate

<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 のインスタンスが必要なことです。この場合、Diagramインスタンスです。どうすれば入手できますか?

4

1 に答える 1

1

を使用してItemsControl.ItemContainerGeneratorから を取得し、TabItemTabControlを使用FindNameしてTabItem.ContentTemplateインスタンス化された名前付きコントロールを検索できます。(ここではおそらく、コンテンツ プレゼンターに名前を付けてから、その をもう一度検索する必要がありますContentTemplate)

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

于 2012-02-02T14:21:47.777 に答える