【问题标题】:WPF button not centering Unicode charactersWPF 按钮未居中 Unicode 字符
【发布时间】:2014-11-21 17:25:01
【问题描述】:

我的 WPF 应用程序中有几个按钮,其中包含 Unicode 字符。

I.E.

Button x:Name="Backspace" Content="←" FontSize="50" Click="Backspace_Click"

按钮内的 ← 渲染得很好......但只有当按钮高于某个高度时!一旦按钮变得太小,它就会突然停止使 ← 垂直居中并且它会离开按钮(如您所见,即使按钮较大,它仍然不能完美地居中 ←)

将按钮的VerticalContentAlignment 设置为Center 没有帮助,将其设置为Stretch 会导致← 随着按钮变高而向上移动。水平方向,← 居中就好了。

我使用的所有 unicode 字符都会出现这种情况。缩小字体大小会导致按钮变小时发生这种情况,反之亦然。

有什么我可以做的吗?也许使用按钮的自定义内容模板来使 unicode 字符更大,而不是使用大字体? unicode 字符是否没有报告其字形的正确高度或其他内容?如果我不能让它工作,我可能只是将 unicode 字符的图像推到按钮中,这将是......不幸的。

【问题讨论】:

  • 注意高度是一样的。看起来你的利润给你带来了麻烦。你应该发布更多代码
  • 对不起,我提到了箭头上方的高度
  • 我注意到高度也是一样的。不涉及边距,按钮位于单元格高度 * 和宽度 * 的网格中,并且该网格位于另一个网格中的用户控件中,也具有 * 单元格宽度和高度
  • 这可以通过创建一个空白窗口并在其中放置一个带有 unicode 字符的按钮来测试。调整按钮的大小,当按钮变得足够小时,您可以看到角色在按钮中向下移动。这似乎是默认行为。

标签: c# wpf unicode


【解决方案1】:

使用 Padding .. 应该可以解决问题

<Button x:Name="Backspace" Content="&#8592;" FontSize="50" Width="100" Height="50" VerticalContentAlignment="Center" Padding="0,-10,0,0"/>

【讨论】:

  • 实际上效果很好!不知道为什么我没有想到Padding。一旦按钮变得足够小,它仍然会移动,但它现在可以解决问题。
  • @TranquilMarmot 它并没有引起您的注意,因为它只是解决它的一种 hacky(某种硬编码)方式。
  • @KingKing 是的,我肯定更喜欢更优雅的解决方案; padding 现在只是一个安抚奶嘴。
猜你喜欢
  • 1970-01-01
  • 2011-01-31
  • 2011-04-19
  • 2013-03-02
  • 2012-01-02
  • 2015-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多