我需要3列:
- 宽度可变的标签
- 具有更多可变宽度的标签(需要截断)
- 图标,固定大小
我目前掌握的情况是:
<Grid SnapsToDevicePixels="True">
<Grid.ColumnDefinitions>
<!-- I tried 'Width' instead of 'MaxWidth'. No difference -->
<ColumnDefinition MaxWidth="80" SharedSizeGroup="Label" />
<ColumnDefinition Width="*" SharedSizeGroup="Name" />
<ColumnDefinition Width="Auto" SharedSizeGroup="Icon" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0"
Text="{Binding Label}"
FontWeight="Bold"
TextTrimming="CharacterEllipsis"
TextWrapping="NoWrap" />
<!-- Started with a simple TextBlock, tried StackPanel, now Grid.
Still this one pushes the icon to the right -->
<Grid Grid.Column="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0"
Text="{Binding Name}"
FontWeight="Bold" />
<TextBlock Grid.Column="1"
Text="{Binding CombinedDisplayName}"
TextTrimming="CharacterEllipsis"
TextWrapping="NoWrap" />
</Grid>
<materialDesign:PackIcon Grid.Column="2"
HorizontalAlignment="Right"
Kind="ConsoleNetworkOutline" />
</Grid>
我想要的是:
- 第一列应占用所需的空间
- 第三列是固定的,并且始终在右侧显示最大值(父栅格会更改大小)
- 第二列应包含剩余空间,如果需要,应截断文本
我也试着给这个父网格一个固定的大小。但是只有当我给文本块硬编码的大小时它才能工作。
编辑:
现在一个坏的副作用是:当中心部分太小时,它会"拉"右列。但右列应该一直停留在最右边,中心应该只是占据整个空间。
1条答案
按热度按时间pw9qyyiw1#
像往常一样,一旦你发布了问题,你自己就会得到它:
中间
Width=*
列上的SharedSizeGroup把我搞砸了。现在我有:<Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
这样第一列取决于文本的长度,第三列在最右边,中间的一列占据了所有其他的空间,并在那里截断字符串。
因此,调整父视图的大小是有效的,所有的空间都得到了很好的利用。