如何在 Viewbox 中保持对齐和间距
How to maintain alignment and spacing in Viewbox
我有一个标签和值列表。例如(此样本用于说明目的):
Tim 0.333
Fred 0.357
Fernando 0.300
我希望能够添加到此列表并缩小文本,以便列表将填充可用的 space 但不超过它。我还希望能够调整 window 的大小并让列表填充可用的 space。我尝试使用 Viewbox 来完成此操作,但以两种不同的方式失败了:
1) 我尝试使用网格并用 Viewbox 包围每个标签和值。这保持了标签和值之间的间距,但标签和值的大小不同。这是显示播放器信息的用户控件的代码:
<UserControl x:Class="Viewbox.Player"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Viewbox Grid.Column="0">
<TextBlock FontSize="30" Margin="5" Text="{Binding Name}" HorizontalAlignment="Left"/>
</Viewbox>
<Viewbox Grid.Column="1" HorizontalAlignment="Right">
<TextBlock FontSize="30" Margin="5" Text="{Binding Average, StringFormat={}{0:0.000}}" HorizontalAlignment="Right"/>
</Viewbox>
</Grid>
</UserControl>
结果如下:
2) 我尝试用 Viewbox 包围网格。这根据我的需要调整了文本的大小,但现在我的间距消失了,每行都居中了。
<UserControl x:Class="Viewbox.Player"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Viewbox>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" FontSize="30" Margin="5" Text="{Binding Name}" HorizontalAlignment="Left"/>
<TextBlock Grid.Column="1" FontSize="30" Margin="5" Text="{Binding Average, StringFormat={}{0:0.000}}" HorizontalAlignment="Right"/>
</Grid>
</Viewbox>
</UserControl>
我已经为这个问题纠结了一段时间。谁能帮我解决这个问题?
谢谢!
我可以通过插入一个空白列来解决问题。这会保留对齐方式和字体大小(在一定程度上):
<UserControl x:Class="Viewbox.Player"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Viewbox Grid.Column="0">
<TextBlock Margin="5" Text="{Binding Name}" HorizontalAlignment="Left"/>
</Viewbox>
<Viewbox Grid.Column="2">
<TextBlock Margin="5" Text="{Binding Average, StringFormat={}{0:0.000}}" HorizontalAlignment="Right"/>
</Viewbox>
</Grid>
</UserControl>
不幸的是,当 window 的尺寸非常高时它有点崩溃:
但是,为了我的目的,我可以限制总高度,所以这不是问题。
我有一个标签和值列表。例如(此样本用于说明目的):
Tim 0.333
Fred 0.357
Fernando 0.300
我希望能够添加到此列表并缩小文本,以便列表将填充可用的 space 但不超过它。我还希望能够调整 window 的大小并让列表填充可用的 space。我尝试使用 Viewbox 来完成此操作,但以两种不同的方式失败了:
1) 我尝试使用网格并用 Viewbox 包围每个标签和值。这保持了标签和值之间的间距,但标签和值的大小不同。这是显示播放器信息的用户控件的代码:
<UserControl x:Class="Viewbox.Player"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Viewbox Grid.Column="0">
<TextBlock FontSize="30" Margin="5" Text="{Binding Name}" HorizontalAlignment="Left"/>
</Viewbox>
<Viewbox Grid.Column="1" HorizontalAlignment="Right">
<TextBlock FontSize="30" Margin="5" Text="{Binding Average, StringFormat={}{0:0.000}}" HorizontalAlignment="Right"/>
</Viewbox>
</Grid>
</UserControl>
结果如下:
2) 我尝试用 Viewbox 包围网格。这根据我的需要调整了文本的大小,但现在我的间距消失了,每行都居中了。
<UserControl x:Class="Viewbox.Player"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Viewbox>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" FontSize="30" Margin="5" Text="{Binding Name}" HorizontalAlignment="Left"/>
<TextBlock Grid.Column="1" FontSize="30" Margin="5" Text="{Binding Average, StringFormat={}{0:0.000}}" HorizontalAlignment="Right"/>
</Grid>
</Viewbox>
</UserControl>
我已经为这个问题纠结了一段时间。谁能帮我解决这个问题?
谢谢!
我可以通过插入一个空白列来解决问题。这会保留对齐方式和字体大小(在一定程度上):
<UserControl x:Class="Viewbox.Player"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Viewbox Grid.Column="0">
<TextBlock Margin="5" Text="{Binding Name}" HorizontalAlignment="Left"/>
</Viewbox>
<Viewbox Grid.Column="2">
<TextBlock Margin="5" Text="{Binding Average, StringFormat={}{0:0.000}}" HorizontalAlignment="Right"/>
</Viewbox>
</Grid>
</UserControl>
不幸的是,当 window 的尺寸非常高时它有点崩溃:
但是,为了我的目的,我可以限制总高度,所以这不是问题。