Pregunta

Hice un control personalizado llamado SmartTabItem , actualmente solo la implementación predeterminada:

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

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

Lo incluyo en mi TabControl de esta manera:

<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>

Pero solo pestañas " Dos " y "Tres" son mostrados. ¿Por qué el SmartTabItem no aparece en TabControl si hereda de TabItem?

¿Fue útil?

Solución

Para usar el estilo predeterminado para un TabItem en su SmartTabItem , modifique el código de esta manera:

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

Esto le indicará al sistema wpf que use el estilo predeterminado de TabItem para sus elementos de pestaña. De lo contrario, su elemento de pestaña es realmente inútil.

Otros consejos

Supongo que ha anulado su estilo predeterminado, pero no le ha proporcionado un estilo en Generic.xaml. Intente comentar esta línea para probar:

DefaultStyleKeyProperty.OverrideMetadata(typeof(SmartTabItem), new FrameworkPropertyMetadata(typeof(SmartTabItem)));
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top