web-dev-qa-db-fra.com

Comment obtenir WPF Window pour redimensionner automatiquement le contenu et pas plus

J'ai une boîte de dialogue contenant 2 TextBlocks, une barre de progression et un bouton d'annulation.

Voici le XAML:

Window x:Class="WpfApplication4.MainWindow"
    xmlns="http://schemas.Microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.Microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.Microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:WpfApplication4"
    mc:Ignorable="d"
    Title="MainWindow" Height="Auto" Width="200">
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>

    <TextBlock x:Name="txtFirst" Grid.Row="0"  Margin="5" TextWrapping="Wrap">This is a really really really really long string that wraps</TextBlock>
    <TextBlock x:Name="txtSecond" Grid.Row="1"  Margin="5" Text="A Shorter string" TextWrapping="Wrap" MaxWidth="200"/>
    <ProgressBar x:Name="prgProgress" Grid.Row="2" Margin="5" Height="20" />
    <Button x:Name="btnCancel" Grid.Row="3" Margin="5" Height="25" Width="50"/>
</Grid>

Je voudrais que la fenêtre n'ait pas une hauteur fixe mais ajuste automatiquement sa hauteur en fonction de la taille de ses enfants et pas plus, mais je ne vois pas de moyen de le faire. Au moment où je n'attribue rien à la hauteur de la fenêtre, il semble adopter une hauteur beaucoup plus grande que le contenu. Vous ne savez pas pourquoi, ni d'où provient la valeur de la hauteur? Si je mets Windows Height = "Auto", j'obtiens la même chose. Toutes les hauteurs pour les RowDefinitions sont définies sur "Auto", ce que je considère comme "définir la hauteur de ligne comme étant la hauteur de l'enfant de ligne".

Merci d'avance pour toute aide.

17
Cleve

Vous devez utiliser la propriété SizeToContent, vérifiez le lien msdn ci-dessous.

https://msdn.Microsoft.com/en-us/library/system.windows.window.sizetocontent (v = vs.110) .aspx

27
Mohammed Arfain