WPF Tabcontrol DataTemplate и инициализация дочернего пользовательского элемента управления - PullRequest
0 голосов
/ 06 марта 2019

У меня есть представление с TabControl, и содержимое каждой вкладки определяется как ресурс в TabControl.Resources.В этом контенте у меня есть пользовательский элемент управления, который в основном содержит сетку данных.

<TabControl ItemsSource="{Binding MyTabs}"
            SelectionChanged="TabSelected">
    <TabControl.Resources>
        <DataTemplate DataType="{x:Type uc:Tab}">
            <uc:MyUserControlWithDatagrid />
        </DataTemplate>
    </TabControl.Resources>
</TabControl>

К моему удивлению, я замечаю, что даже если у меня есть несколько элементов вкладок, я только один раз вхожу в конструктор MyUserControlWithDatagrid.Я предполагаю, что это «общий» для всех элементов вкладки?

Если это правильно, как я могу сделать так, чтобы экземпляр usercontrol создавался для каждого элемента вкладки?

1 Ответ

0 голосов
/ 06 марта 2019

Возможно, вы захотите прочитать эту статью о виртуализации вкладок.

Образцы кода можно загрузить по адресу здесь .

Предлагаемое решение позволяет определить пользовательский шаблон:

<TabControl ikriv:TabContent.IsCached="True">
    <ikriv:TabContent.Template>
        <DataTemplate>
            <!-- custom content template goes here -->
        </DataTemplate>
    </ikriv:TabContent.Template>
</TabControl>
...