2009-08-04 8 views
4

に表示されない、現在だけでデフォルトの実装:がなぜのTabItemのカスタムコントロールは、私が<strong>SmartTabItem</strong>と呼ばれるカスタムコントロールを作っ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> 

「2」と「3」のタブのみが表示されます。 TabItemから継承したSmartTabItemがTabControlに表示されないのはなぜですか?

+0

私は全く同じ問題を抱えていました。質問をしていただきありがとうございます。 – jjnguy

答えて

5

があなたのSmartTabItemTabItemのデフォルトスタイルを使用するには、次のようなコードを変更します。

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

このTabItemを使用するために、WPFシステムを教えてくれますあなたのタブ項目のデフォルトスタイル。それ以外の場合は、あなたのタブ項目は本当に見た目がありません。

1

あなたはデフォルトのスタイルをオーバーライドしていますが、Generic.xamlでスタイルを指定していないので、推測しています。テストに次の行をコメントアウトしてみてください。

DefaultStyleKeyProperty.OverrideMetadata(typeof(SmartTabItem), new FrameworkPropertyMetadata(typeof(SmartTabItem))); 
関連する問題