包含不同长度文本的两个标签的 WPF/XAML 布局,同时保持相同大小的字体缩放

标签 wpf xaml fonts scaling

我正在尝试放置两个标签,一个紧挨着另一个(间距很小)。

例如

标签 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,这会限制其大小(以像素为单位)。

您可以使用具有不同ColumnDefinitionsGrid来代替DockPanel来达到相同的效果。

重要的是它们都在同一个Viewbox中(因此,它不会同步FontSize,而是对其包含的所有内容执行视觉缩放)。

关于包含不同长度文本的两个标签的 WPF/XAML 布局,同时保持相同大小的字体缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10311684/

相关文章:

xaml - 如何在ListView中绑定(bind)Label的FontSize

c# - 如何从 Windows 应用商店应用程序中的 SecondaryTile 导航到特定页面?

css - 如何使用CSS修改字体?

html - Google Font Api 未在服务器上显示但在本地显示

c# - 依赖属性绑定(bind)未更新

WPF TextBox 丑边框问题

wpf - 如何让 IntelliSense 在 XAML 中的自定义/用户控件上自动完成枚举?

c# - 两个 BackgroundWorker,一个 List<T>

c# - bool 转换器未命中转换器

Java 小程序 : Read ttf file - access denied