如何使元素自动扩展以填充 space 而无需接管?
How to make an element auto-expand to fill space without taking over?
我正在 XAML 和 WPF 中创建自定义日历。日历由七个 <Grid>
列组成,可以使用 window.
自动扩展(例如 width="1*"
)
这是现在发生的事情:
一个非常宽的元素“接管”了列并使其他列变小,这不是我想要的。
我希望它看起来像这样:
在此示例中,列会自动扩展以填充可用宽度(window 大小),但元素不能使一列变大。我知道实现此目的的唯一方法是设置宽度 属性( 但它不会自动扩展 )。
这是示例代码。它会产生像第一张图片一样的输出:
<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">
让我知道这是否有帮助,如果没有,我可以深入研究!
我没有看到这种行为。当我尝试您的代码片段时,文本不会“接管”其他列。它被剪掉了(见下文)
Sample without TextWrapping
您似乎想将 TextBlock 的 TextWrapping 属性设置为“Wrap”。
<TextBlock Text="Hello world this is a sample very long text!" Grid.Column="1" TextWrapping="Wrap"/>
Sample with TextWrapping="Wrap"
我正在 XAML 和 WPF 中创建自定义日历。日历由七个 <Grid>
列组成,可以使用 window.
width="1*"
)
这是现在发生的事情:
一个非常宽的元素“接管”了列并使其他列变小,这不是我想要的。
我希望它看起来像这样:
在此示例中,列会自动扩展以填充可用宽度(window 大小),但元素不能使一列变大。我知道实现此目的的唯一方法是设置宽度 属性( 但它不会自动扩展 )。
这是示例代码。它会产生像第一张图片一样的输出:
<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">
让我知道这是否有帮助,如果没有,我可以深入研究!
我没有看到这种行为。当我尝试您的代码片段时,文本不会“接管”其他列。它被剪掉了(见下文)
Sample without TextWrapping
您似乎想将 TextBlock 的 TextWrapping 属性设置为“Wrap”。
<TextBlock Text="Hello world this is a sample very long text!" Grid.Column="1" TextWrapping="Wrap"/>
Sample with TextWrapping="Wrap"