WPF列按动态边距设置最小高度?

时间:2015-07-13 21:47:58

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

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

我有这个UI: enter image description here

整个事情被划分为一个有两行的网格,一个*高度,顶部消息是另一个" Auto"底部选项按钮所在的高度。这适用于完整的UI,因为它将按钮堆叠在我想要的底部,文本位于顶部空白部分的中心位置。

然而,当我把它做得足够小以致不是一切都适合时,它开始覆盖消息文本并留下底部按钮。我可以在顶行发送一个最小高度,当顶行达到最小尺寸时,它开始切断最近的文件,因为它很少会变得那么小,并删除旧的最近文件并不是什么大不了的事。

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

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

1 个答案:

答案 0 :(得分: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