Lidar com diferentes Mostrar Propriedades tamanhos de letra devido a em um WPF App?

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

  •  03-07-2019
  •  | 
  •  

Pergunta

O meu grupo está a construir um aplicativo do tipo editor em WPF. Uma coisa que notei é que na minha máquina WinXP, correndo com o tema "janelas estilo clássico", o texto nos botões é se encaixa bem. No entanto na máquina do meu amigo, que está correndo com o tema "Windows XP estilo", o tamanho da fonte é maior para que o texto nos botões de ficar cortada na parte inferior.

Existe uma maneira de lidar com isso muito bem, como redimensionar automaticamente os controles para ajustar o texto?

Eu hesito em redimensionar manualmente o botão para ajustar seu layout como qualquer outra pessoa pode ter configurações totalmente diferentes através da exibição Propriedades e opções de acessibilidade.

Obrigado!

Foi útil?

Solução

Um botão WPF irá redimensionar automaticamente para caber o conteúdo que foi dado, no entanto, ele só vai fazer isso quando se está dentro de um recipiente que não impõe tamanho e seu tamanho não foi definido manualmente. Para provar isso mexer com o tamanho da fonte no seguinte trecho 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> 

Eu acho que seus botões não redimensionada, porque você tem os constrangia. Para corrigir isso, você precisa decidir como você quer que eles para redimensionar (que pode ser muito complicado quando os elementos se sobrepõem, se eles apenas cresceu cegamente) e se nenhum dos tipos de painéis fornecidos executar o comportamento de crescimento que você está procurando, então você pode precisar para escrever o seu próprio que faz.

Outras dicas

Você codificado tamanhos elemento usando propriedades largura e altura? Em WPF a maneira recomendada de fazer isso é usar os vários recipientes de layout.

A seguir é um exemplo de uma grade que estabelece dois botões na parte inferior e uma caixa de texto no topo.

<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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top