2009-08-04 4 views
4

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

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?

+0

У меня была точно такая же проблема. Спасибо, что задали вопрос. – jjnguy

ответ

5

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

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

Это покажет систему МОФ использовать TabItem по умолчанию для ваших элементов табуляции. В противном случае ваш элемент табуляции по-настоящему бесстрашный.

1

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

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