Wpf控制大小内容?

如何使WPF控件根据其中的内容更改其大小?

对于大多数控件,在XAML中将其高度和宽度设置为“ Auto ”,并将其大小调整为适合其内容。

在代码中,您将宽度/高度设置为double.NaN 。 有关详细信息,请参阅FrameworkElement.Width ,特别是“备注”部分。

我有这样的问题,我指定了我的窗口的宽度,但有高度设置为AutoDockPanel的孩子将VerticalAlignment设置为Top,而Window将VerticalContentAlignment设置为Top,但窗口仍然比内容高。

使用Snoop,我发现窗口内的ContentPresenter (窗口的一部分,不是我已经放在那里的)将VerticalAlignment设置为Stretch ,并且不能在不考虑整个窗口的情况下进行更改!

经过大量的挫折后,我发现了SizeToContent属性 – 你可以用它来指定你想让Window根据内容的大小来垂直,水平或者两者兼有的大小 – 现在所有的东西都很好,我不能相信花了我很长时间才find这个地产!

如果您使用网格或类似的组件:在XAML中,确保网格中的元素定义了Grid.Row和Grid.Column,并确保它们没有边距。 如果使用devise器模式或Expression Blend,则可能会将边距指定为整个网格而不是特定的单元格。 至于细胞大小,我添加一个额外的细胞,填补余下的空间:

  <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="*"/> </Grid.RowDefinitions> 

我有一个自由forms的坐在页面上的用户控件,不受另一个容器的约束,并且用户控件中的内容不会自动resize,而是扩展到用户控件的全部大小。

为了让用户控件简单地设置为内容的大小,只有高度,我把它放在一个网格中,行被设置为自动调整尺寸,例如:

 <Grid Margin="0,60,10,200"> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <controls1:HelpPanel x:Name="HelpInfoPanel" Visibility="Visible" Width="570" HorizontalAlignment="Right" ItemsSource="{Binding HelpItems}" Background="#FF313131" /> </Grid>