2014-07-07 6 views
5

ho il seguente codice in WPF XAML:Tasto Set Size al contenuto Dimensione in WPF Application

<Window x:Class="WPFDemo.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525"> 

    <StackPanel> 
     <Button Content="Hello World" Width="Auto" Height="Auto"></Button> 
    </StackPanel> 


</Window> 

ho impostato la larghezza e l'altezza del pulsante "Auto", ma ancora si estende la dimensione orizzontale completa . Che cosa sto facendo di sbagliato? Non voglio fornire valori hardcoded per la larghezza e l'altezza!

+1

provare impostando

risposta

8

Si sta utilizzando il tipo sbagliato di controllo contenitore. Il StackPanel fa non ridimensiona il suo contenuto. Provare con un Grid invece:

<Grid> 
    <Button Content="Hello" HorizontalAlignment="Center" VerticalAlignment="Center" /> 
</Grid> 

Inoltre, non è necessario impostare la Width e Height a "Auto", come i valori predefiniti consentiranno al Button di allungare a riempire il suo contenitore principale (a seconda del controllo contenitore) . Vedere la pagina Panels Overview su MSDN per ulteriori informazioni sulle differenze tra i vari controlli contenitore in WPF.

+0

Puoi anche rilasciare la griglia e mettere il pulsante direttamente come contenuto di 'Window'. –

+2

Ho provato a mettere il pulsante in Grid ma ora il pulsante occupa l'intero schermo invece della dimensione del contenuto. Sembra che devo dividere la griglia in righe e colonne. –

+1

Imposta "HorizontalAlignment" e "VerticalAlignment" su "Center" e il pulsante si adatta al suo contenuto. –

0
<Window x:Class="WPFDemo.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow"> 
    <Grid> 
     <Button Content="Hello World" Width="Auto" Height="Auto"></Button> 
    </Grid> 
</Window> 
1

Come ha detto Sheridan, non è necessario impostare Larghezza e Altezza su "Auto". Il tuo problema è che l'allineamento di default del contenuto di StackPanel è "Stirato". Quindi imposta la proprietà HorizontalAlignment del tuo pulsante su "Left" o "Right".

Problemi correlati