visual texto tamaño studio propiedades darle como change cambiar agrandar wpf xaml styles resourcedictionary

wpf - texto - label c# propiedades



¿Cómo anular un estilo global(que no tiene una clave x:) o, alternativamente, aplicar un estilo con nombre a todos los controles orientados por tipo? (3)

En algún lugar del diccionario de recursos global, usted define un estilo base con una clave. Este estilo base está dirigido a un tipo que es la base para todos los tipos para los que tiene la intención de aplicar ese estilo. Luego, define los estilos que se dirigen a los tipos que desea y se basan en el estilo base mencionado anteriormente.

<Style x:Key="upDownBaseStyle" TargetType="{x:Type Control}"> <Setter Property="Margin" Value="2" /> <Setter Property="HorizontalAlignment" Value="Stretch" /> <Setter Property="VerticalAlignment" Value="Center" /> </Style> <Style TargetType="{x:Type xceed:IntegerUpDown}" BasedOn="{StaticResource upDownBaseStyle}"> </Style> <Style TargetType="{x:Type xceed:DoubleUpDown}" BasedOn="{StaticResource upDownBaseStyle}"> </Style>

Ahora los dos últimos estilos se aplican a todos los controles IntegerUpDown y DoubleUpDown dentro de su aplicación sin mencionar ninguna tecla.

Entonces, la regla base: el estilo base debe tener la clave para referirse a él, y los estilos derivados pueden no aplicarse y, por lo tanto, pueden aplicarse sin claves, solo por tipos de objetivos.

Decidí un estilo que deseo aplicar a TODOS los botones del proyecto, el estilo reside en ResourceDictionary:

<Style TargetType="StackPanel"> <Setter Property="Orientation" Value="Horizontal" /> <Setter Property="VerticalAlignment" Value="Center"/> <Setter Property="HorizontalAlignment" Value="Center"/> </Style>

Ahora, en alguna ventana, quiero heredar de este estilo pero agrego un valor:

<Style TargetType="StackPanel"> <Setter Property="Margin" Value="5"/> </Style>

El problema es que no hereda del estilo global, para heredar debo asignar una clave al estilo global:

<Style TargetType="StackPanel" x:Key="StackPanelStyle" />

Y luego en XAML de la ventana hereda (o / y anula - opcional):

<Style TargetType="StackPanel" BasedOn="StackPanelStyle" />

El problema es que si asigna una clave, no es global y debe invocarla en cada ventana / ámbito.

Una solución a mi pregunta debería ser una de las dos (¿hay algo más que me esté perdiendo?):

  1. Tenga un estilo global con una clave, que se aplique automáticamente a todos sus controles específicos en toda la aplicación.
  2. Una forma de referirse al estilo sin nombre de ResourceDictionary sin y anularlo.

Pensé en redeclar los estilos cerca de los estilos nombrados (en el ResourceDictionary) que en realidad funciona:

<!--In the ResourceDictionary--> <Style x:Key="StackPanelStyle" TargetType="StackPanel"> <Setter Property="Orientation" Value="Horizontal" /> <Setter Property="VerticalAlignment" Value="Center"/> <Setter Property="HorizontalAlignment" Value="Center"/> </Style> <!--In the app.xaml--> <Style TargetType="StackPanel" BasedOn="{StaticResource StackPanelStyle}"/> <!--In the window/page scope--> <Style TargetType="StackPanel" BasedOn="{StaticResource StackPanelStyle}"/

Pero estoy buscando cosas mejores que redeclarar estúpidamente todos los estilos.


Prueba esto:

<Style TargetType="{x:Type StackPanel}" BasedOn="{StaticResource {x:Type StackPanel}}"> <!-- ... --> </Style>

He declarado mis estilos base en un ResourceDictionary en App.xaml, si los invalido en una ventana específica como esta, por lo general funciona.


Sugeriría que lo que esté buscando aquí sea un estilo maestro o un escenario de comportamiento que generalmente se logra creando un control de usuario. Si tuviera que crear un nuevo control de botones con su estilo ''global'' aplicado, entonces en cualquier lugar donde use ese control podría simplemente agregar cualquier '' Nuevo estilo o reemplazar los estilos si / cuando fueran necesarios.

Si no ha creado un control de usuario, son fáciles de implementar.