繁体   English   中英

Wpf控制内容的大小?

[英]Wpf control size to content?

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

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

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

我遇到了这样的问题,我指定了 Window 的宽度,但将高度设置为Auto DockPanelVerticalAlignment设置为 Top,Window 的 VerticalContentAlignment 设置为 Top,但 Window 仍然比内容高得多。

使用 Snoop,我发现窗口中的ContentPresenter (窗口的一部分,不是我放在那里的东西)将其VerticalAlignment设置为Stretch并且如果不重新模板化整个窗口就无法更改!

在经历了很多挫折之后,我发现了SizeToContent属性 - 您可以使用它来指定是否希望窗口根据内容的大小进行垂直、水平或两者的调整 - 现在一切都很好,我只是不能相信我花了这么长时间才找到那处房产!

我有一个用户控件,它以自由形式位于页面上,不受另一个容器的约束,用户控件中的内容不会自动调整大小,而是扩展到用户控件的完整大小。

为了让用户控件简单地调整其内容的大小,仅针对高度,我将其放入一个网格中,并将行设置为自动大小,如下所示:

<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>

如果您使用网格或类似组件:在 XAML 中,确保网格中的元素定义了 Grid.Row 和 Grid.Column,并确保它们没有边距。 如果您使用设计器模式或 Expression Blend,它可能会分配相对于整个网格而不是特定单元格的边距。 至于单元格大小,我添加了一个额外的单元格来填充其余空间:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM