我有一个带有自定义行的ListBox,用于显示人员的姓名和年龄。
这是我的ListBox自定义行的代码:
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Background="Black" HorizontalAlignment="Left" Margin="0" Width="{Binding ElementName=DummyGridWidthItems, Path=ActualWidth}" Height="{Binding ElementName=DummyGridWidthItems, Path=ActualHeight}" ShowGridLines="True">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="0.3*"/>
</Grid.ColumnDefinitions>
<Viewbox StretchDirection="Both" Grid.Column="0" Stretch="Uniform" HorizontalAlignment="Left" VerticalAlignment="Center">
<TextBlock Background="Aqua" Foreground="#5a5a5a" TextWrapping="Wrap" Margin="5" TextAlignment="Left" Text="{Binding Name}"/>
</Viewbox>
<TextBlock Grid.Column="1" Foreground="#5a5a5a" Text="12" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="16"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
当我运行此代码时,我的Viewbox中的TextBlock会显示短字符串和长字符串的下一个图像:
如您所见,长字符串变得太小。所以我决定在网上搜索如何将字符串包装成多行,我找到了answer。我设置Width值来获取调整大小的文本,如果需要,还可以设置多行调整大小的文本,但结果如下:
即使长串也有多条线,它变得更小......唯一的好处是小字符串调整得更好。
作为我的最后一次尝试,我将Viewbox Stretch属性更改为“Fill”,但我得到了这个:
在所有这些混乱之后,我有3个问题:
1)我的应用程序是在不同的屏幕尺寸上执行的,所以我想要调整所有字符串的大小,这样用户可以有一种非常简单的方式来读取它们,这个Viewbox是不是正确的方法 - TextBlock ?
2)如何在Viewbox中创建TextBlock以使所有可用空间都填充多行?
3)如果我找到的answer指引我朝正确的方向发展,我怎样才能获得TextBlock和Viewbox的正确宽度?
关于这个问题的任何其他信息,我很乐意阅读它。谢谢。