FrameworkElement.DefaultStyleKey Propiedad

Definición

Obtiene o establece la clave que usará para hacer referencia al estilo de este control, cuando se utilicen o se definan estilos de tema.

protected public:
 property System::Object ^ DefaultStyleKey { System::Object ^ get(); void set(System::Object ^ value); };
protected internal object DefaultStyleKey { get; set; }
member this.DefaultStyleKey : obj with get, set
Protected Friend Property DefaultStyleKey As Object

Valor de propiedad

La clave de estilo. Para que funcione correctamente como parte de la búsqueda de estilo de tema, se espera que este valor sea el elemento Type del control al que se está aplicando un estilo.

Ejemplos

En el ejemplo siguiente se muestra el uso de invalidación de metadatos de la propiedad de dependencia descrito en Comentarios. Este código define una clase NumericUpDown de control personalizada destinada a usarse desde un ensamblado de biblioteca de controles dedicado. El constructor estático ilustrado hace referencia a alguna función de inicialización privada, registra un controlador de clases (otro escenario de subclases de control común; vea Marcar eventos enrutados como controlados y Control de clases) y, por último, invalida los metadatos de la DefaultStyleKey propiedad de dependencia en la NumericUpDown clase. DefaultStyleKey siempre devuelve su propio tipo como clave prevista, que es la convención que usa el sistema de estilo de tema para buscar el estilo para algún control arbitrario que no tiene estilo.

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Automation.Peers;
using System.Windows.Automation.Provider;
using System.Windows.Automation;
using System.Globalization;
using System.Diagnostics;

namespace CustomControlLibrary
{
    public partial class NumericUpDown : Control
    {
        static NumericUpDown()
        {
            InitializeCommands();

            // Listen to MouseLeftButtonDown event to determine if slide should move focus to itself
            EventManager.RegisterClassHandler(typeof(NumericUpDown), 
                Mouse.MouseDownEvent, new MouseButtonEventHandler(NumericUpDown.OnMouseLeftButtonDown), true);

            DefaultStyleKeyProperty.OverrideMetadata(typeof(NumericUpDown), new FrameworkPropertyMetadata(typeof(NumericUpDown)));
        }
    }
}
Imports System.Windows
Imports System.Windows.Controls
Imports System.Windows.Input

Namespace CustomControlLibrary
    Public Partial Class NumericUpDown
        Inherits Control

        Shared Sub New()
            InitializeCommands()

            ' Listen to MouseLeftButtonDown event to determine if slide should move focus to itself
            EventManager.RegisterClassHandler(GetType(NumericUpDown), Mouse.MouseDownEvent, New MouseButtonEventHandler(AddressOf NumericUpDown.OnMouseLeftButtonDown), True)

            DefaultStyleKeyProperty.OverrideMetadata(GetType(NumericUpDown), New FrameworkPropertyMetadata(GetType(NumericUpDown)))
        End Sub
    End Class
End Namespace

El código fuente completo de este ejemplo está disponible para Visual Basic.

Comentarios

Normalmente, esta propiedad no se establece a través de ninguno de sus descriptores de acceso de propiedad directa. En su lugar, invalida los metadatos específicos del tipo de esta propiedad de dependencia cada vez que se crea una nueva FrameworkElement clase derivada. Cuando se deriva un control, llame al OverrideMetadata método con el DefaultStyleKeyProperty identificador, dentro del constructor estático de la clase derivada del control (o inicialización de clase equivalente).

Un control normalmente invalida el valor predeterminado de esta propiedad para que sea su propio tipo, pero en algunos casos también podría usar un tipo base para el que existe un estilo en los diccionarios de temas. Esto solo es práctico si las plantillas de control del control base definen completamente la representación visual de ese control derivado, y si los miembros adicionales que exponen los tipos derivados no requieren elementos adicionales como parte de la plantilla de control.

Si desea que el elemento o el control no usen deliberadamente estilos de tema, establezca la OverridesDefaultStyle propiedad trueen .

Información sobre propiedades de dependencia

Campo identificador DefaultStyleKeyProperty
Propiedades de metadatos establecidas en true AffectsMeasure

Se aplica a

Consulte también