繁体   English   中英

如何使元素自动扩展以填充空间而不接管?

[英]How to make an element auto-expand to fill space without taking over?

我正在 XAML 和 WPF 中创建自定义日历。 日历由七个<Grid>列组成,可以随窗口自动扩展(例如width="1*" )。

这是现在发生的事情:

在此处输入图像描述

一个非常宽的元素“接管”了列并使其他列更小,这不是我想要的。

我希望它看起来像这样:

在此处输入图像描述

在此示例中,列会自动扩展以填充可用宽度(窗口大小),但元素不能使一列变大。 我知道实现这一点的唯一方法是设置 width 属性(但它不会自动扩展)。

这是示例代码。 它会产生像第一张图片一样的输出:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="1*"/>
        <ColumnDefinition Width="1*"/>
        <ColumnDefinition Width="1*"/>
        <ColumnDefinition Width="1*"/>
        <ColumnDefinition Width="1*"/>
        <ColumnDefinition Width="1*"/>
        <ColumnDefinition Width="1*"/>
    </Grid.ColumnDefinitions>
    <TextBlock Text="Hello world this is a sample very long text!" Grid.Column="1"/>
    <TextBlock Text="Hello world !" Grid.Column="2"/>
</Grid>

我怎样才能达到这个期望的输出?

编辑:我在我的网格周围使用了一个ScrollViewer (在有很多作业的情况下垂直滚动)。 属性HorizontalScrollBarVisibility="Hidden"实际上导致了这种奇怪的行为。

我不确定它是否可以解决您的问题,但是如果溢出,您可以尝试将文本换行,如下所示:

<TextBlock Text="Some long text" TextWrapping="Wrap">

让我知道这是否有帮助,如果没有,我可以进一步研究!

我没有看到这种行为。 当我尝试您的代码片段时,文本不会“接管”其他列。 它被剪掉了(见下文)

不带 TextWrapping 的示例

似乎您可能希望将 TextBlock 的 TextWrapping 属性设置为“Wrap”。

<TextBlock Text="Hello world this is a sample very long text!" Grid.Column="1" TextWrapping="Wrap"/>

带有 TextWrapping="Wrap" 的示例

暂无
暂无

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

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