Uso de recursos del sistema (WPF .NET)

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 determinados en el sistema como recursos y propiedades para ayudarle a crear objetos visuales coherentes con Windows.

Importante

La documentación de la guía de escritorio para .NET 7 y .NET 6 está en proceso de elaboración.

Fuentes

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

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

<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 ningún valor estático ni ninguna referencia de recursos dinámicos. En su lugar, use las propiedades que no sean de clave de la clase SystemFonts. Aunque las propiedades que no son de clave se definen aparentemente como propiedades estáticas, el comportamiento en tiempo de ejecución de WPF cuando está hospedado en el sistema volverá a evaluar las propiedades en tiempo real y tendrá en cuenta correctamente los cambios impulsados 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

La métricas de fuentes del sistema se pueden usar como recursos estáticos o dinámicos. Use un recurso dinámico si quiere que la métrica de fuentes 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 obtener acceso a los recursos dinámicos de fuentes del sistema y cómo usarlos para aplicar estilo a un bloque de texto o personalizarlo:

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

En el siguiente ejemplo se muestra cómo obtener acceso a los valores estáticos de SystemParameters y cómo usarlos para aplicar estilo a un botón o personalizarlo. En este ejemplo de marcado aplica un tamaño a un botón mediante la aplicación de valores SystemParameters 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 ninguna referencia estática ni ninguna referencia de recursos dinámicos. En su lugar, use los valores de la clase SystemParameters. Aunque las propiedades que no son de clave aparentemente se definen como propiedades estáticas, el comportamiento en tiempo de ejecución de WPF cuando está hospedado en el sistema volverá a evaluar las propiedades en tiempo real y tendrá en cuenta correctamente los cambios impulsados por el usuario en los valores del sistema. En el ejemplo siguiente se muestra cómo establecer el ancho y el alto de un botón mediante valores SystemParameters:

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 quiere que la métrica de parámetros 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 obtener acceso y usar los recursos dinámicos de parámetros del sistema para aplicar estilo a un botón o personalizarlo. En este ejemplo de XAML se asigna un tamaño a un botón mediante la asignación de valores SystemParameters 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>

Vea también