0

我有一个TabControlwhereContentTemplateDataTemplate包含 a定义的ContentPresenter。映射UIElement类由DataTemplate特定 ViewModel 类型定义。它是这样工作的:

<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 的实例。在这种情况下,图表实例。我怎样才能得到它们?

4

1 回答 1

1

您可以使用ItemsControl.ItemContainerGenerator来获取TabItem您的TabControl,然后您可以使用FindNameTabItem.ContentTemplate搜索命名的实例化控件。(在这里您可能需要命名 content-presenter,然后再次在其中搜索ContentTemplate

我不建议你做这样的事情,如果你没有这个就无法管理,你可能没有将所有相关属性绑定到你的项目。

于 2012-02-02T14:21:47.777 回答