Получить экземпляр UIElement ContentTemplate из TabControl - PullRequest
0 голосов
/ 02 февраля 2012

У меня есть TabControl, где ContentTemplate определяется DataTemplate, содержащим 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>

Моя проблема в том, что мне нужен экземпляр инстанцированных элементов UIE. В этом случае Диаграмма экземпляры. Как я могу получить их?

1 Ответ

1 голос
/ 02 февраля 2012

Вы можете использовать ItemsControl.ItemContainerGenerator, чтобы получить TabItem из вашего TabControl, затем вы можете использовать FindName на TabItem.ContentTemplate для поиска именованных экземпляров элементов управления.(Здесь вам, вероятно, потребуется указать имя предъявителя контента, а затем снова выполнить поиск в его ContentTemplate)

Я бы не советовал делать что-либо подобное, если вы не можете обойтись без этого, вы, вероятно, не связали всерелевантные свойства для ваших товаров.

...