Propiedad TargetType
Collapse the table of content
Expand the table of content

Style.TargetType Property

Obtiene o establece el tipo para el que está previsto el estilo. Este valor también se puede utilizar para declarar un recurso de estilo implícito si no hay también una clave de recurso especificada.

Sintaxis


public Type TargetType { get; set; }


<Style TargetType="typeName"/>

XAML Values

typeName

Cadena que especifica el nombre del tipo en el que se aplica el estilo. Esto puede incluir un prefijo xmlns para los tipos personalizados; vea los comentarios.

Valor de propiedades

Tipo: System.Type [.NET] | TypeName [C++]

Tipo de objeto al que se aplica el estilo.

Comentarios

Un valor TargetType se requiere para todos los casos en los que utiliza o declara un Style. No hay ningún valor predeterminado. Incluso la clase Style que se usa como valor alineado de la propiedad FrameworkElement.Style requiere un valor TargetType explícito.

La manera típica de especificar un valor TargetType consiste en usar un atributo XAML en el elemento Style. Cuando se establece en XAML, el significado del concepto de tipo asume algunos aspectos de cómo se representan los tipos en XAML.

Es necesario incluir en el valor de atributo de la propiedad TargetType cualquier prefijo necesario para hacer referencia a un tipo mediante el uso de un elemento XAML. Por ejemplo, si un estilo tiene como destino un tipo personalizado definido en un espacio de nombres de código asignado al prefijo "local:", el valor del atributo TargetType para dicho estilo de tipo debe incluir el mismo prefijo del nombre del tipo. Este comportamiento lo habilita el comportamiento de conversión de cadena integrado en el analizador XAML de Windows en tiempo de ejecución.

Cuando se definen estilos para tipos personalizados, una vez que ha incluido un prefijo de asignación para TargetType, no incluya ningún prefijo en el valor Property de ningún Setter dentro de ese Style.

El valor que se proporciona para TargetType modifica el comportamiento de búsqueda de cualquier valor de Setter.Property que se especifique en el estilo. Específicamente, se espera que las propiedades de dependencia a las que se hace referencia por el nombre para un valor de atributo XAMLSetter.Property existan en el tipo TargetType, o en cualquier clase antecesora. Por ejemplo, si la propiedad TargetType especificada es Button y uno de los valores de atributo de XAML Setter.Property de la clase Style es "Background" que se resuelve como la propiedad Control.Background (la clase Control estará tres niveles encima de la clase Button en su herencia de clases y Button heredará todas las propiedades de Control). Es habitual especificar el valor de TargetType de modo que coincida con el nombre de los elementos de la interfaz de usuario que utilizaría en el marcado típico de la interfaz de usuario en lugar de hacer referencia a una clase antecesora (aunque técnicamente esté permitido).

Si el Style incluye Setter que declara una plantilla de control (un valor para la propiedad Template), el valor TargetType del elemento primario Style debe coincidir con el valor TargetType del elemento ControlTemplate contenido.

Sugerencia  Si está programando utilizando un lenguaje de Microsoft .NET (C# o Microsoft Visual Basic), el tipo TypeName se proyecta como System.Type. Al programar utilizando C#C#, normalmente se utiliza el operador typeof para obtener referencias al System.Type de un tipo basado en un nombre de tipo como una cadena. En Visual Basic, utilice GetType.

Estilos implícitos

Los estilos se declaran casi siempre como recursos XAML que se comparten y se aplican a cada elemento de IU en la aplicación que hace referencia a ese estilo. Para que se declaren como recursos, todos los elementos XAML, incluyendo los elementos Style, deben tener una clave en la colección de recursos que distinga cada recurso para la búsqueda en tiempo de ejecución. El elemento Style (así como los distintos elementos de la plantilla, como ControlTemplate) admiten una característica denominada estilos implícitos. Para un estilo implícito, el valor proporcionado para el valor TargetType también actúa como clave para dicho estilo en el ámbito de la colección de recursos y no necesitará especificar el valor x:Key attribute. (En cambio, la mayoría de los demás elementos que declara dentro de una colección de recursos no necesitan un valor explícito x:Key y obtendría errores en tiempo de diseño o de analizador que aplican esto).

Un estilo declarado mediante el estilo implícito se utiliza como valor Style para cualquier instancia del elemento de interfaz de usuario que es específicamente del tipo que coincide con el TargetType del estilo implícito. Los controles no necesitan hacer referencia a un estilo con un valor de atributo Style y una referencia de StaticResource a una clave para obtener este comportamiento, ya que el comportamiento está implícito si los controles coinciden con un tipo de estilo implícito existente.

Los estilos implícitos no se aplican a los elementos que son subtipos del tipo al que se hace referencia como el valor TargetType. Por ejemplo, si declara un estilo implícito para los controles ToggleButton y su aplicación tiene controles CheckBox (CheckBox se deriva de ToggleButton), el estilo se aplica específicamente a los controles ToggleButton pero no a los controles de CheckBox.

Windows en tiempo de ejecución define los estilos implícitos predeterminados para cada elemento práctico de la interfaz de usuario que sea parte de la API de Windows en tiempo de ejecución. Tiene que hacerlo porque estos estilos definen las propiedades visuales de los elementos (especialmente de las plantillas), y un elemento sin propiedades visuales ni siquiera puede aparecer en la interfaz de usuario ni participar en el diseño. Todos estos estilos implícitos se pueden ver en el archivo XAML auxiliar de diseño denominado generic.xaml. Las herramientas que se usan para editar XAML pueden copiar partes discretas de este archivo en el XAML de su aplicación como punto inicial cuando se editan las copias de estilos tal como los habilitan las herramientas. Dentro de los estilos implícitos predeterminados, hay muchos niveles de referencia de recursos, así como compatibilidad con temas que usan la Extensión de marcado ThemeResource y pinceles específicos del tema u otros recursos. Puede reemplazar cualquier estilo implícito que proceda de Windows en tiempo de ejecución, que define estilos implícitos predeterminados. Para obtener más información, vea Inicio rápido: aplicar estilos a los controles y el Inicio rápido: plantillas de control.

Notas sobre la migración

  • Si ha utilizado XAML para Windows Presentation Foundation (WPF), puede que haya utilizado una extensión de marcado x:Type para completar cualquier valor XAML que toma un objeto System.Type. El analizador XAML de Windows en tiempo de ejecución no admite x:Type. En su lugar, debe hacer referencia al tipo por nombre sin utilizar ninguna extensión de marcado, y cualquier conversión necesaria de tipos XAML en tipos de respaldo ya está controlada por el comportamiento de conversión integrado en el analizador de XAML.

Ejemplos

Este ejemplo crea dos estilos: uno para TextBlock y el otro para TextBox. Cada estilo se aplica a dos instancias de un control para crear una apariencia uniforme para cada TextBlock y TextBox. En el ejemplo se establece la propiedad FrameworkElement.Style de cada control haciendo referencia a Style como StaticResource.


<StackPanel>
  <StackPanel.Resources>
    <!--Create a Style for a TextBlock to specify that the
              Foreground equals Navy, FontSize equals 14, and
              VerticalAlignment equals Botton.-->
    <Style TargetType="TextBlock" x:Key="TextBlockStyle">
      <Setter Property="Foreground" Value="Navy"/>
      <Setter Property="FontSize" Value="14"/>
      <Setter Property="VerticalAlignment" Value="Bottom"/>
    </Style>

    <!--Create a Style for a TextBlock that specifies that
              the Width is 200, Height is 20, Margin is 4,
              Background is LightBlue, and FontSize is 14.-->
    <Style TargetType="TextBox" x:Key="TextBoxStyle">
      <Setter Property="Width" Value="200"/>
      <Setter Property="Height" Value="30"/>
      <Setter Property="Margin" Value="4"/>
      <Setter Property="FontSize" Value="14"/>
      <Setter Property="Background">
        <Setter.Value>
          <LinearGradientBrush StartPoint="0,0.5" EndPoint="1,0.5">
            <GradientStop Color="White" Offset="0.0"/>
            <GradientStop Color="LightBlue" Offset="0.5"/>
            <GradientStop Color="Navy" Offset="1"/>
          </LinearGradientBrush>
        </Setter.Value>
      </Setter>
    </Style>
  </StackPanel.Resources>

  <!--Apply the TextBlockStyle and TextBoxStyle to each 
          TextBlock and TextBox, respectively.-->
  <StackPanel Orientation="Horizontal">
    <TextBlock Style="{StaticResource TextBlockStyle}">
              First Name:
          </TextBlock>
    <TextBox Style="{StaticResource TextBoxStyle}"/>
  </StackPanel>
  <StackPanel Orientation="Horizontal">
    <TextBlock Style="{StaticResource TextBlockStyle}">
              Last Name:
          </TextBlock>
    <TextBox Style="{StaticResource TextBoxStyle}"  
                   Margin="6,4,4,4"/>
  </StackPanel>
</StackPanel>


Requisitos

Cliente mínimo admitido

Windows 8

Servidor mínimo admitido

Windows Server 2012

Espacio de nombres

Windows.UI.Xaml
Windows::UI::Xaml [C++]

Metadatos

Windows.winmd

Vea también

Style

 

 

Mostrar:
© 2018 Microsoft