Gestire dimensioni di carattere diverse a causa delle proprietà di visualizzazione in un'app WPF?

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

  •  03-07-2019
  •  | 
  •  

Domanda

Il mio gruppo sta creando un'app di tipo editor in WPF. Una cosa che abbiamo notato è che sulla mia macchina WinXP, in esecuzione con lo "stile classico di Windows" tema, il testo sui pulsanti va bene. Tuttavia sulla macchina del mio amico, che è in esecuzione con lo stile "windows xp" tema, la dimensione del carattere è più grande, quindi il testo sui pulsanti viene ritagliato nella parte inferiore.

C'è un modo per gestirlo bene, come ridimensionare automaticamente i controlli per adattarli al testo?

Esito a ridimensionare manualmente il pulsante per adattarlo al suo layout poiché chiunque altro può avere impostazioni totalmente diverse tramite le proprietà di visualizzazione e le opzioni di accessibilità.

Grazie!

È stato utile?

Soluzione

Un pulsante WPF verrà ridimensionato automaticamente per adattarsi al contenuto che è stato dato, tuttavia lo farà solo quando si trova all'interno di un contenitore che non impone la dimensione e la sua dimensione non è stata impostata manualmente. Per provare questo pasticcio con la dimensione del carattere nel seguente frammento di codice:

<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> 

Suppongo che i tuoi pulsanti non siano stati ridimensionati perché li hai vincolati. Per risolvere questo problema, devi decidere come ridimensionare (il che può essere molto complicato quando gli elementi si sovrappongono se si espandessero alla cieca) e se nessuno dei tipi di pannello forniti esegue il comportamento di crescita che stai cercando, potrebbe essere necessario per scrivere il tuo.

Altri suggerimenti

Hai codificato le dimensioni degli elementi usando le proprietà Larghezza e Altezza? In WPF il modo consigliato per farlo è usare i vari contenitori di layout.

Il seguente è un esempio di una griglia che pone due pulsanti in basso e una casella di testo in alto.

<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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top