Wpf控制大小内容?
如何使WPF控件根据其中的内容更改其大小?
对于大多数控件,在XAML中将其高度和宽度设置为“ Auto
”,并将其大小调整为适合其内容。
在代码中,您将宽度/高度设置为double.NaN
。 有关详细信息,请参阅FrameworkElement.Width ,特别是“备注”部分。
我有这样的问题,我指定了我的窗口的宽度,但有高度设置为Auto
。 DockPanel
的孩子将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>