Как динамически генерировать сетки из различных шаблонов - PullRequest
1 голос
/ 03 июля 2019

Я относительно новичок в WPF и пытаюсь создать систему, в которой вы можете нажать кнопку, чтобы добавить новую вкладку, которая генерирует соответствующую сетку для отображения содержимого. Например, когда вы открываете новую вкладку, первой страницей будет «Домашняя страница», на этой новой вкладке у вас появятся параметры для перехода к другому содержимому, например «Параметры». Затем вы можете добавить еще одну вкладку и повторить процесс и т. Д. Это будет похоже на Google Chrome, так как каждая вкладка представляет другой браузер.

Пока у меня работают свои вкладки, однако я застрял в том, как я должен генерировать сетки для каждой вкладки. У кого-нибудь есть предложения, как мне это сделать?

1 Ответ

1 голос
/ 04 июля 2019
  • Создание абстрактного TabData базового класса со свойством Header string.
  • Создайте класс, производный от TabData для каждого типа вкладки, которую вы хотите (например, HomeData, OptionsData и т. Д.)
  • Создание модели представления со свойством Items типа IEnumerable<TabData>.
  • Свяжите свойство ItemsSource TabControl с Items и определите неявное DataTemplate для каждого конкретного TabData типа:

    <TabControl ItemsSource="{Binding Items}">
        <TabControl.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Header}" />
            </DataTemplate>
        </TabControl.ItemTemplate>
        <TabControl.Resources>
            <DataTemplate DataType="{x:Type local:HomeData}">
                ...
            </DataTemplate>
            <DataTemplate DataType="{x:Type local:OptionsData}">
                ...
            </DataTemplate>
        </TabControl.Resources>
    </TabControl>
    

DataTemplate определяет внешний вид вкладки и может содержать DataGrid или любой другой элемент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...