【问题标题】:WPF Column set MIN height by dynamic margins?WPF列通过动态边距设置MIN高度?
【发布时间】:2015-07-13 21:47:57
【问题描述】:

是否可以根据内容将行的最小高度设置为动态?简要说明:

我有这样的用户界面:

整个东西被分成两行的网格,一个 * 高度在顶部消息所在的位置,另一个“自动”高度在底部选项按钮所在的位置。这适用于完整的 UI,因为它将按钮堆叠在我想要它们的底部,并且文本位于顶部空白部分的中心位置。

但是,当我把它做得足够小以至于不是所有东西都适合时,它开始覆盖消息文本并留下底部按钮。我可以在顶行发送一个最小高度,当顶行达到最小尺寸时,它开始切断最近的文件,这是宜居的,因为它很少会变得那么小,并且删除较旧的最近文件并不是什么大问题.

所以主要问题是消息可能会根据其他代码的结果而改变,它可能是几行,也可能只是一行。我可以硬编码最小高度,但是如果我让它足够大以适应较长的消息,那么一个衬垫周围会有很大的余量,如果我适合一个衬垫,它会切断较长的衬垫。此外,由于文本换行,文本消息的高度取决于窗口的宽度,该宽度也是可变的。是否可以告诉 WPF 行的最小高度是内容高度加上边距?

如果不可能的话,我绝对可以忍受硬编码的高度,所以不要花太多时间,但我认为值得一问:)

【问题讨论】:

    标签: .net wpf xaml user-interface grid-layout


    【解决方案1】:

    我会在第一行使用height=Auto,第二行使用height=* 记住添加TextWrapping=Wrap 并将边距添加到第二行的第一个项目/面板

    例如简单的例子

    <Grid Width="200">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>            
        </Grid.RowDefinitions>
        <TextBlock Text="some text in the top" TextWrapping="Wrap"></TextBlock>
        <ListBox Grid.Row="1" Margin="0,20"/>        
    </Grid>
    

    您可能需要将ScrollViewer 包裹在Grid 周围以应对不同大小的Windows

    【讨论】:

    • 也许可以,但是这样会在 UI 底部留下空白,对吗?我宁愿将下部一直堆叠在底部,并在大多数情况下将空白留在顶部,但是如果顶部达到最小尺寸,它就会开始遮挡底部......
    猜你喜欢
    • 1970-01-01
    • 2021-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-24
    • 1970-01-01
    相关资源
    最近更新 更多