2008-10-29 7 views
7

Ceci est censé être un brainer, mais je ne peux toujours pas le comprendre.Problème de taille-à-contenu-mise en page dans WPF

Dans mon exemple d'application, il y a un bouton et une zone de texte dans un DockPanel. Si le contenu de la zone de texte est plus petit que le contenu de la zone de texte, la fenêtre est aussi grande que nécessaire pour afficher le contenu du bouton. C'est ce que je veux. Mais si je mets plus de texte dans la zone de texte, la fenêtre s'agrandit :-(

Le comportement que je souhaite est que la fenêtre obtienne la largeur en fonction du contenu des boutons et la zone de texte enveloppe son contenu (ou/et affiche les barres de défilement si . nécessaire)

Merci

Quelques exemples de code:

<Window x:Class="SO1.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" SizeToContent="Width" FontSize="20"> 
    <DockPanel> 
     <Button DockPanel.Dock="Top">A rather long text</Button> 
     <TextBlock TextWrapping="Wrap">Short text</TextBlock> 
    </DockPanel> 
</Window> 

Répondre

7

Après avoir essayé, il semble que la liaison du MaxWidth de TextBlock au ActualWidth du Button obtient l'effet désiré:

<Button x:Name="btn" DockPanel.Dock="Top">Short text</Button> 
<TextBlock TextWrapping="Wrap" 
    MaxWidth="{Binding ElementName=btn,Path=ActualWidth}">A rather long text</TextBlock>