Compartir a través de


Uso de recursos del sistema

En este ejemplo se muestra cómo usar recursos definidos por el sistema. WPF proporciona recursos del sistema y permite el acceso a los recursos del sistema operativo, como fuentes, colores e iconos. Los recursos del sistema exponen varios valores definidos por el sistema como recursos y propiedades para ayudarle a crear objetos visuales coherentes con Windows.

Fuentes

Use la SystemFonts clase para hacer referencia a las fuentes usadas por el sistema operativo. Esta clase contiene valores de fuente del sistema como propiedades estáticas y propiedades que hacen referencia a claves de recursos que se pueden usar para acceder a esos valores dinámicamente en tiempo de ejecución. Por ejemplo, CaptionFontFamily es un SystemFonts valor y CaptionFontFamilyKey es una clave de recurso correspondiente.

En el ejemplo siguiente se muestra cómo acceder y usar las propiedades de SystemFonts como valores estáticos para aplicar estilo o personalizar un bloque de texto:

<TextBlock FontSize="{x:Static SystemFonts.SmallCaptionFontSize}"
           FontWeight="{x:Static SystemFonts.SmallCaptionFontWeight}"
           FontFamily="{x:Static SystemFonts.SmallCaptionFontFamily}"
           Text="Small Caption Font">
</TextBlock>

Para usar los valores de SystemFonts en el código, no es necesario usar un valor estático ni una referencia de recursos dinámicos. En su lugar, use las propiedades que no son clave de la SystemFonts clase . Aunque las propiedades que no son clave se definen aparentemente como propiedades estáticas, el comportamiento en tiempo de ejecución de WPF como hospedado por el sistema volverá a evaluar las propiedades en tiempo real y tendrá en cuenta correctamente los cambios controlados por el usuario en los valores del sistema. En el ejemplo siguiente se muestra cómo especificar la configuración de fuente de un botón:

var myButton = new Button()
{
    Content = "SystemFonts",
    Background = SystemColors.ControlDarkDarkBrush,
    FontSize = SystemFonts.IconFontSize,
    FontWeight = SystemFonts.MessageFontWeight,
    FontFamily = SystemFonts.CaptionFontFamily
};

mainStackPanel.Children.Add(myButton);
Dim myButton = New Button() With
{
    .Content = "SystemFonts",
    .Background = SystemColors.ControlDarkDarkBrush,
    .FontSize = SystemFonts.IconFontSize,
    .FontWeight = SystemFonts.MessageFontWeight,
    .FontFamily = SystemFonts.CaptionFontFamily
}

mainStackPanel.Children.Add(myButton)

Fuentes dinámicas en XAML

Las métricas de fuente del sistema se pueden usar como recursos estáticos o dinámicos. Use un recurso dinámico si desea que la métrica de fuente se actualice automáticamente mientras se ejecuta la aplicación; De lo contrario, use un recurso estático.

Nota:

Los recursos dinámicos tienen la palabra clave Key anexada al nombre de propiedad.

En el ejemplo siguiente se muestra cómo acceder a los recursos dinámicos de fuentes del sistema y usarlos para aplicar un estilo o personalizar un bloque de texto:

<TextBlock FontSize="{DynamicResource {x:Static SystemFonts.SmallCaptionFontSize}}"
           FontWeight="{DynamicResource {x:Static SystemFonts.SmallCaptionFontWeight}}"
           FontFamily="{DynamicResource {x:Static SystemFonts.SmallCaptionFontFamily}}"
           Text="Small Caption Font">
</TextBlock>

Parámetros

Use la SystemParameters clase para hacer referencia a propiedades de nivel de sistema, como el tamaño de la pantalla principal. Esta clase contiene las propiedades de valor del parámetro del sistema y las claves de recursos que se enlazan a los valores. Por ejemplo, FullPrimaryScreenHeight es un SystemParameters valor de propiedad y FullPrimaryScreenHeightKey es la clave de recurso correspondiente.

En el ejemplo siguiente se muestra cómo acceder a los valores estáticos de SystemParameters para aplicar estilo o personalizar un botón. En este ejemplo de marcado se cambia el tamaño de un botón aplicando SystemParameters valores a un botón:

<Button FontSize="8" 
        Height="{x:Static SystemParameters.CaptionHeight}"
        Width="{x:Static SystemParameters.IconGridWidth}"
        Content="System Parameters">
</Button>

Para usar los valores de SystemParameters en el código, no es necesario usar referencias estáticas ni referencias de recursos dinámicos. En su lugar, use los valores de la SystemParameters clase . Aunque las propiedades que no son clave se definen aparentemente como propiedades estáticas, el comportamiento en tiempo de ejecución de WPF como hospedado por el sistema volverá a evaluar las propiedades en tiempo real y tendrá en cuenta correctamente los cambios controlados por el usuario a los valores del sistema. En el ejemplo siguiente se muestra cómo establecer el ancho y el alto de un botón mediante SystemParameters valores:

var myButton = new Button()
{
    Content = "SystemParameters",
    FontSize = 8,
    Background = SystemColors.ControlDarkDarkBrush,
    Height = SystemParameters.CaptionHeight,
    Width = SystemParameters.CaptionWidth,
};

mainStackPanel.Children.Add(myButton);
Dim myButton = New Button() With
{
    .Content = "SystemParameters",
    .FontSize = 8,
    .Background = SystemColors.ControlDarkDarkBrush,
    .Height = SystemParameters.CaptionHeight,
    .Width = SystemParameters.CaptionWidth
}

mainStackPanel.Children.Add(myButton)

Parámetros dinámicos en XAML

Las métricas de parámetros del sistema se pueden usar como recursos estáticos o dinámicos. Use un recurso dinámico si desea que la métrica de parámetro se actualice automáticamente mientras se ejecuta la aplicación; De lo contrario, use un recurso estático.

Nota:

Los recursos dinámicos tienen la palabra clave Key anexada al nombre de propiedad.

En el ejemplo siguiente se muestra cómo acceder y usar recursos dinámicos de parámetros del sistema para aplicar estilo o personalizar un botón. En este ejemplo xaml se ajusta el tamaño de un botón mediante la asignación de SystemParameters valores al ancho y alto del botón.

<Button FontSize="8" 
        Height="{DynamicResource {x:Static SystemParameters.CaptionHeightKey}}"
        Width="{DynamicResource {x:Static SystemParameters.IconGridWidthKey}}"
        Content="System Parameters">
</Button>

Consulte también