Viewbox - TextBlock多行并填充WPF

时间:2015-11-10 01:42:43

标签: c# wpf width textblock viewbox

我有一个带有自定义行的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会显示短字符串和长字符串的下一个图像:

enter image description here

如您所见,长字符串变得太小。所以我决定在网上搜索如何将字符串包装成多行,我找到了answer。我设置Width值来获取调整大小的文本,如果需要,还可以设置多行调整大小的文本,但结果如下:

enter image description here

即使长串也有多条线,它变得更小......唯一的好处是小字符串调整得更好。

作为我的最后一次尝试,我将Viewbox Stretch属性更改为“Fill”,但我得到了这个:

enter image description here

在所有这些混乱之后,我有3个问题:

1)我的应用程序是在不同的屏幕尺寸上执行的,所以我想要调整所有字符串的大小,这样用户可以有一种非常简单的方式来读取它们,这个Viewbox是不是正确的方法 - TextBlock ?

2)如何在Viewbox中创建TextBlock以使所有可用空间都填充多行?

3)如果我找到的answer指引我朝正确的方向发展,我怎样才能获得TextBlock和Viewbox的正确宽度?

关于这个问题的任何其他信息,我很乐意阅读它。谢谢。

0 个答案:

没有答案