代码之家  ›  专栏  ›  技术社区  ›  Edward Tanguay

为什么我的TabItem自定义控件未显示在TabControl中?

  •  4
  • Edward Tanguay  · 技术社区  · 16 年前

    我做了一个自定义控件 智能项目 ,当前只是默认实现:

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

    我把它包括在我的 选项卡控件 这样地:

    <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”。 如果smarttabitem继承自tabitem,为什么它不显示在tabcontrol中?

    2 回复  |  直到 13 年前
        1
  •  5
  •   Fabrício Matté    16 年前

    使用默认样式 TabItem 对你 SmartTabItem ,修改代码如下:

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

    这将告诉WPF系统使用 标签项目 选项卡项的默认样式。否则,您的标签项就真的很难看了。

        2
  •  1
  •   Tim Cooper    13 年前

    我猜是因为您已经覆盖了它的默认样式,但还没有在generic.xaml中为它提供样式。尝试评论此行以测试:

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