我正在尝试放置两个标签,一个紧挨着另一个(间距很小)。
例如
标签 1 标签 2
每个标签的内容总是不同的,大多数情况下标签 2 会有更多字符,但我希望内容随着窗口大小的调整而缩放,并且我希望标签 1 和标签 2 中的字体大小保持一致。
我不在乎标签 2 的内容是否太长是否被裁剪。
我尝试使用具有两列的网格并将标签放置在 ViewBox 内:
<Viewbox Margin="0,0,0,0" VerticalAlignment="Top" HorizontalAlignment="Left">
<Label Margin="0,0,0,0" Content="{Binding Path=Suburb}"/>
</Viewbox>
问题是,位置永远都不正确,而且字体大小也不一致。
实现此目的的最佳布局方法是什么?可以通过绑定(bind)同步字体大小吗?我尝试将 Label 2 的 FontSize 属性绑定(bind)到 Label 1 的 FontSize 但这不起作用,因为无论字体实际有多大/小,它每次都只返回 12 (我假设实际的 FontSize 没有被计算,因为标签位于 ViewBox 内)。
有什么建议吗?
谢谢
最佳答案
您可以使用以下方法:
<Viewbox VerticalAlignment="Top">
<DockPanel>
<TextBlock Text="Second" DockPanel.Dock="Right" />
<TextBlock Text="First" />
</DockPanel>
</Viewbox>
请注意,第二个标签永远不会被裁剪,因为 Viewbox
允许内容呈现为任意大小,然后缩放。您可以在第二个 TextBlock
上指定 MaxWidth
,这会限制其大小(以像素为单位)。
您可以使用具有不同ColumnDefinitions
的Grid
来代替DockPanel
来达到相同的效果。
重要的是它们都在同一个Viewbox
中(因此,它不会同步FontSize
,而是对其包含的所有内容执行视觉缩放)。
关于包含不同长度文本的两个标签的 WPF/XAML 布局,同时保持相同大小的字体缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10311684/