【发布时间】:2017-03-16 19:00:06
【问题描述】:
我想要 WPF 中的一些非常简单的东西,但我没有让它工作:
我有一个包含 2 列的网格:一列 * 和一列 Auto。第二列包含一个 TextBlock。我需要 texttrimming 来处理这个 TextBlock。这目前不起作用,因为 TextBlock 超出了网格的边界。
额外信息:
- 第二列的宽度应刚好足以包含 TextBlock。第一列应包含所有剩余空间。如果 Grid 的宽度不足以包含 TextBlock 的所需宽度,则应修剪文本。
- 调整窗口大小时,Grid 的宽度会发生变化。
- 没有什么是静态的(不是文本,没有大小),因此不能使用硬编码值。
- ClipToBounds 属性不能解决此问题。
- 我不能将 TextBlock 的 MaxWidth 绑定到列的宽度,否则 TextBlock 只会变小,而不会在调整窗口大小时变大。
重现问题的代码(例如在 Kaxaml 中):
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<DockPanel>
<Grid Height="20" Background="Blue" DockPanel.Dock="Top" Margin="100 0 100 0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto" MaxWidth="200"/>
</Grid.ColumnDefinitions>
<TextBlock
Grid.Column="1"
Background="Red"
Text="Test tralalalalalalalalalala long string this should be trimmed!"
TextTrimming="CharacterEllipsis"/>
</Grid>
</DockPanel>
</Page>
有什么建议吗?
【问题讨论】:
标签: wpf