Manejo de diferentes tamaños de fuente debido a las propiedades de visualización en una aplicación WPF?

StackOverflow https://stackoverflow.com/questions/811217

  •  03-07-2019
  •  | 
  •  

Pregunta

Mi grupo está creando una aplicación de tipo editor en WPF. Una cosa que notamos es que en mi máquina WinXP, que se ejecuta con el "estilo clásico de Windows" Tema, el texto en los botones se ajusta bien. Sin embargo, en la máquina de mi amigo, que se ejecuta con el estilo "Windows XP" " tema, el tamaño de la fuente es más grande, por lo que el texto de los botones se recorta en la parte inferior.

¿Hay una manera de manejar esto bien, como cambiar automáticamente el tamaño de los controles para que se ajusten al texto?

Dudo en cambiar el tamaño del botón manualmente para que se ajuste a su diseño, ya que cualquier otra persona puede tener configuraciones totalmente diferentes a través de las Propiedades de pantalla y las Opciones de accesibilidad.

¡Gracias!

¿Fue útil?

Solución

Un botón WPF cambiará automáticamente su tamaño para ajustarse al contenido que se le ha dado, sin embargo, solo lo hará cuando esté dentro de un contenedor que no imponga el tamaño y su tamaño no se haya configurado a mano. Para probar este desorden con el tamaño de fuente en el siguiente fragmento de código:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <Button
        Grid.Column="1"
        Grid.Row="1"
        FontSize="24"
        Content="QWERTY"/>
</Grid> 

Supongo que tus botones no han cambiado de tamaño porque los has restringido. Para solucionar esto, debe decidir cómo desea que se redimensionen (lo que puede ser muy complicado cuando los elementos se superponen si crecen ciegamente) y si ninguno de los tipos de paneles suministrados realiza el comportamiento de crecimiento que está buscando, entonces es posible que necesite para escribir el tuyo que hace.

Otros consejos

¿Ha codificado los tamaños de elementos utilizando las propiedades Ancho y Altura? En WPF, la forma recomendada de hacer esto es usar varios contenedores de diseño.

El siguiente es un ejemplo de una cuadrícula que coloca dos botones en la parte inferior y un cuadro de texto en la parte superior.

<Grid>
    <Grid.RowDefinitions>
        <!-- TextBox row with unspecified height. -->
        <RowDefinition Height="*"/>

        <!-- Button row with automated height so it resizes to
             fit the content -->
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>

    <!-- Textbox on first row. -->
    <TextBox Margin="3" Name="textBox1" Grid.Row="0" AcceptsReturn="True" />

    <!-- StackPanel which lays the two buttons at the bottom horizontally.
         RightToLeft is specified so that the first button appears on right.
         -->
    <StackPanel Grid.Row="1" HorizontalAlignment="Right"
                Orientation="Horizontal" FlowDirection="RightToLeft">

        <!-- The buttons. Only padding and margin are hardcoded so these
             can resize to the contents -->
        <Button Padding="3" Margin="3">OK</Button>
        <Button Padding="3" Margin="3">Cancel</Button>
    </StackPanel>
</Grid>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top