Почему мой пользовательский элемент управления TabItem не отображается в TabControl - PullRequest
4 голосов
/ 04 августа 2009

Я создал пользовательский элемент управления SmartTabItem , в настоящее время это просто реализация по умолчанию:

using System.Windows;
using System.Windows.Controls;

namespace TestControl.Controls
{
    public class SmartTabItem : TabItem
    {
        static SmartTabItem()
        {
            DefaultStyleKeyProperty.OverrideMetadata(typeof(SmartTabItem), new FrameworkPropertyMetadata(typeof(SmartTabItem)));
        }
    }
}

Я включаю его в свой TabControl вот так:

<Window x:Class="TestControl.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:controls="clr-namespace:TestControl.Controls"
    Title="Window1" Height="300" Width="300">
    <DockPanel Margin="10">
        <TabControl>
            <controls:SmartTabItem Header="One">content of one</controls:SmartTabItem>
            <TabItem Header="Two">content of two</TabItem>
            <TabItem Header="Three">content of three</TabItem>
        </TabControl>
    </DockPanel>
</Window>

Но отображаются только вкладки «Два» и «Три». Почему SmartTabItem не отображается в TabControl, если он наследуется от TabItem?

Ответы [ 2 ]

5 голосов
/ 04 августа 2009

Чтобы использовать стиль по умолчанию для TabItem на SmartTabItem, измените код следующим образом:

DefaultStyleKeyProperty.OverrideMetadata(typeof(SmartTabItem), new FrameworkPropertyMetadata(typeof(TabItem)));

Это скажет системе wpf использовать стиль по умолчанию TabItem для элементов табуляции. В противном случае ваш элемент вкладки действительно выглядит просто.

1 голос
/ 04 августа 2009

Я предполагаю, потому что вы переопределили его стиль по умолчанию, но не предоставили стиль для него в Generic.xaml. Попробуйте закомментировать эту строку для проверки:

DefaultStyleKeyProperty.OverrideMetadata(typeof(SmartTabItem), new FrameworkPropertyMetadata(typeof(SmartTabItem)));
...