style form fontsize font family change xaml inheritance xamarin xamarin.forms

fontsize - xamarin forms style button xaml



¿Cómo se sugiere heredar de un estilo implícito en Xamarin.Forms XAML? (1)

Antes que nada, ¡gracias por el buen resumen!

En mi opinión, este es un error , que se puede evitar con un pequeño truco :

<!-- Base Style --> <Style x:Key="BaseButtonStyle" TargetType="Button"> <!-- Define base button style... --> </Style> <!-- Implicit Style --> <Style TargetType="Button" BasedOn="{StaticResource BaseButtonStyle}"></Style> <!-- Inherited Style --> <Style x:Key="InheritedButtonStyle" TargetType="Button" BasedOn="{StaticResource BaseButtonStyle}"> <!-- Extend base button style... --> </Style>

Básicamente, la idea es crear un estilo de base explícito común, que luego se hereda por un estilo implícito . Por lo tanto, todos los botones aplican automáticamente BaseButtonStyle, que además es extensible.

Atención : el estilo implícito debe crearse después de definir el estilo base.

EDITAR : Aparentemente esta es la misma solución que la # 2 ya provista anteriormente. Entonces, el problema del Trigger no es fijo, lo que parece ser un error.

Tengo algunos problemas para heredar un estilo implícito definido en Application ResourceDictionary. He intentado un par de enfoques diferentes, pero ninguno ha tenido éxito de una forma u otra.

Intento 1: heredar del estilo implícito

Aplicación ResourceDictionary

<Style TargetType="Button"> <Setter Property="BackgroundColor" Value="#1386F1" /> <Setter Property="TextColor" Value="White" /> <Setter Property="FontAttributes" Value="Bold" /> <Setter Property="HeightRequest"> <OnPlatform x:TypeArguments="x:Double" iOS="30" Android="50" /> </Setter> <Style.Triggers> <Trigger TargetType="Button" Property="IsEnabled" Value="False"> <Setter Property="BackgroundColor"> <OnPlatform x:TypeArguments="Color" iOS="#E8E8E8" /> </Setter> </Trigger> </Style.Triggers> </Style>

Página ResourceDictionary

<Style x:Key="LoginButtonStyle" TargetType="Button" BasedOn="{StaticResource {x:Type Button}}"> <Setter Property="BackgroundColor" Value="#024886" /> <Setter Property="Margin"> <OnPlatform x:TypeArguments="Thickness" iOS="0,5" /> </Setter> </Style>

Control de página

<Button Style="{StaticResource LoginButtonStyle}" />

Resultado

Lanza la excepción "StaticResource not found for key {x: Type Button}". Así es como recuerdo haberlo hecho en WPF, pero supongo que esto no es compatible con Xamarin XAML.

Intento 2: heredar del estilo explícito común

Aplicación ResourceDictionary

<Style x:Key="DefaultButtonStyle" TargetType="Button"> <!-- Same as Attempt 1 --> </Style> <!-- This implicit style causes issues with the inheritence of the Trigger in the above explicit style. When it''s commented out, everything works fine. --> <Style TargetType="Button" BasedOn="{StaticResource DefaultButtonStyle}" />

Página ResourceDictionary

<Style x:Key="LoginButtonStyle" TargetType="Button" BasedOn="{StaticResource DefaultButtonStyle}"> <!-- Same as Attempt 1 --> </Style>

Control de página

<!-- Same as Attempt 1 -->

Resultado

Todo funciona excepto el Gatillo. Sin embargo, cuando elimino el estilo implícito, Trigger comienza a funcionar mágicamente de nuevo. Sin embargo, prefiero no tener que especificar el estilo explícito en cada botón. Creo que esto es solo un error, pero quería asegurarme antes de tomarme el tiempo para preparar un informe de errores.

¿Algunas ideas?

Pregunta en los foros de Xamarin