Пользовательский элемент вкладки не отображает содержимое - PullRequest
0 голосов
/ 03 августа 2020

Я новичок в WPF, и мне нужно создать настраиваемый элемент табуляции (для повторного использования кода), но у меня возникли некоторые проблемы.

  1. Я создаю этот новый класс:
    public class tabitem : TabItem
    {
        static tabitem()
        {
            DefaultStyleKeyProperty.OverrideMetadata(typeof(tabitem), new FrameworkPropertyMetadata(typeof(tabitem)));
        }
    }
Я создаю этот xaml-файл:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:local="clr-namespace:Empresa.Cliente.Presentacion.controls.dictionary"
                    xmlns:controls="clr-namespace:Empresa.Cliente.Presentacion.controls.code">
    <Style TargetType="controls:tabitem" BasedOn="{StaticResource {x:Type TabItem}}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="controls:tabitem">
                    <TabItem>
                        <TabItem.Header>
                            <TextBlock Grid.Column="0" Text="{Binding Header}"/>
                        </TabItem.Header>
                        <TabItem.Content>
                            <StackPanel>
                                <Button Content="new"/>
                                <Button Content="edit"/>
                                <DataGrid/>
                            </StackPanel>
                        </TabItem.Content >
                    </TabItem>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</ResourceDictionary>
Теперь я создаю несколько элементов управления (для повторного использования кода):
<controls:tabitem x:Class="Empresa.Cliente.Presentacion.modules.customers.tab__list"
             xmlns:controls="clr-namespace:Empresa.Cliente.Presentacion.controls.code"
             mc:Ignorable="d" d:DesignHeight="450" d:DesignWidth="800" Header="Module customers">

</controls:tabitem>
<controls:tabitem x:Class="Empresa.Cliente.Presentacion.modules.products.tab__list"
             xmlns:controls="clr-namespace:Empresa.Cliente.Presentacion.controls.code"
             mc:Ignorable="d" d:DesignHeight="450" d:DesignWidth="800" Header="Module products">

</controls:tabitem>
Наконец, в окне есть этот код:
<Window ... mc:Ignorable="d" WindowState="Maximized" Title="win__main" Height="450" Width="800">
    <TabControl Grid.Column="2">
        <products:tab__list/>
        <customers:tab__list/>
    </TabControl>
</Window>
Теперь проблема:

5.1) Почему при запуске приложение может отображать только заголовок элементов вкладки, но не содержимое?

5.2) Как я не могу добавлять столбцы в datagrid из каждого control (описано в пункте 3).

Спасибо за всю помощь, которую вы можете мне оказать. Я попытался найти решение в Google, но безрезультатно.

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