WPF - 使用标准按钮创建带有上下箭头的按钮

81

我希望使用标准按钮背景创建一些上下箭头按钮,但箭头是黑色的。

在WPF中,最好的实现方式是什么?

马尔科姆

5个回答

181

我发现Marlett(Windows内置的字体)在这方面非常方便。

<Button FontFamily="Marlett" FontSize="20" Content="5"/>
<Button FontFamily="Marlett" FontSize="20" Content="6"/>

输出:

在此输入图像描述


7
哇。我知道这不像手动绘制三角形多符合 WPF 风格,但是...没想到会被踩。 - Matt Hamilton
3
请点击“开始|运行”,然后键入“charmap” - 这样您就可以切换到“Marlett”字体并查看。我相信这是Windows 95最初用于呈现所有UI按钮图形的字体。 - Matt Hamilton
5
+1 解决了我的问题。比每次都画三角形要方便得多。很实用,谢谢! - Joey
2
在Silverlight中,"Webdings"是用于此操作的字体。 - Doguhan Uluca
1
根据Taran的回答,这个字体现在可能已经过时了,但至少它在所有Windows版本中都可用,从7开始。 - Dabblernl
显示剩余7条评论

116

谈论这个主题时,不提到几何迷你语言(或路径标记语法)的更紧凑的形状定义就不完整:

  <Button>
    <Path Fill="Black" Data="M 0 6 L 12 6 L 6 0 Z"/>
  </Button>
  <Button>
    <Path Fill="Black" Data="M 0 0 L 6 6 L 12 0 Z"/>
  </Button>

首先,描述了移动到0,6行,然后绘制从12,6到6,0的线条,并封闭形状(Z)。

此外,还有一种曲线语法。


5
左右箭头分别为:Data="M -2 6 L 4 12 L 4 0 Z" Data="M 2 12 L 9 6 L 2 0 Z"。 - Tim
@Tim 这些不对称:/ - BartoszKP
谢谢解释 :) 终于知道这些字符 L、M、Z 代表什么了!! - mrid

48

现在首选的方法是使用Segoe UI Symbol,它替代了Marlett并提供了许多有用的字形。向上和向下将会是:

<Button FontFamily="Segoe UI Symbol" Content="&#xE1FD;"/>    
<Button FontFamily="Segoe UI Symbol" Content="&#xE110;"/>

呈现为:

updown

这种字体已经预安装在所有的Windows 7和8版本中。

自Windows 10发布以来,Segoe UI Symbol字体被认为是一种遗留资源,应该在所有新项目中用Segoe MDL2 Assets替换,如此处所述


7
该字体已被 Segoe MDL2 Assets 替代,适用于 Windows 10。现在提供的链接将引导至 Segoe UI Symbol 的替代品。请注意,Segoe UI Symbol 不适用于 Windows 10,而 Segoe MDL2 Assets 则不适用于 Windows 8.1。 - Dabblernl
1
这个答案应该得到更多的赞,以提高其可见性,因为这是现今最常用的方法。 - Christian Ivicevic

6
您可以创建一个Polygon,代表您的上下三角形,并将其设置为按钮的内容:
<Button>
  <Polygon 
    Points="300,200 450,200 375,300 300,200"
    Stroke="Black">
    <Polygon.Fill>
      <SolidColorBrush Color="Black" />
    </Polygon.Fill>
  </Polygon>
</Button>

你可以微调这些参数以绘制不同的图形,但通常这是您用于基本几何图形的XAML。


3
如果您想要一个带有基础矩形的箭头,您可以使用以下示例...
<Button >
   <Polygon   Stretch="Fill"  Fill="Black" Points="0,0 0,30 0,10 30,10 30,-10 45,10 30,30 30,20 0,20 0,0 30,0 30,10 0,10" />
</Button>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接