Windows 8.1应用程序中的自定义按钮

时间:2013-11-18 22:08:10

标签: xaml windows-8 winrt-xaml windows-8.1

我需要在Windows 8.1应用中创建一个具有图标和文本标签的按钮。该图标将是Segoe UI Symbols的符号,文本标签将是较小文本大小的Segoe UI Semibold。

我希望能够使用不同的图标和文字标签在应用内的不同位置重复使用该按钮。

我怎么看这个?我可以创建一个按钮,然后编辑ContentPresenter,使其具有一个带有两个TextBlocks的水平方向的堆栈面板,但是我怎么能重用它呢?我怎么能改变两个不同文本块中的文本?

我应该为每个textblock字符串创建一个单独的自定义控件,其中包含单独的依赖项属性吗?我很想听听你会做什么。

感谢

2 个答案:

答案 0 :(得分:5)

创建一个简单的Style。为了方便起见,我将基于标准化的AppBarButton风格。您可以将其格式化为您想要的任何大小(我已经做了类似的事情来制作更大的按钮或侧面有文字的按钮)。

主图标只是ContentPresenter,使用Content绑定到TemplateBinding。务必将FontFamily设置为Segoe UI Symbol。将文本标签从AutomationProperties.Name拉出,类似于AppBarButton样式的方式。

然后,只要你想使用它,就行:

<Button Style="{StaticResource MyCustomButtonStyle}"
        Content="&#xe000;" // Where "000" is replaced by the number of the icon you wish to use.
        AutomationProperties.Name="Text Label"/>

这应该是可扩展的,并且可以轻松地重现到您需要的任何位置。复制AppBarButton样式时,我建议删除人工尺寸限制(特别是主要内容的宽度Grid)。我建议给文本标签一个固定大小,或者让它从指定的父Width中拉出它的大小,这样它就会Wrap正确。

希望这有助于编码!

答案 1 :(得分:2)

您是否希望创建类似于AppBar的内容?看看AppBarButton及其支持的样式/类型。在Windows 8.1中,我们专门针对SymbolIcon添加了一些内容。由于您基本上需要为您的样式添加两个“内容”,因此您必须重新使用一个属性(除非您创建一个自定义控件,此方案不需要)。对可见标签使用AutiomationProperties.Name是一个好主意,因为默认情况下它对这些用户也有帮助。

调查AppBarButton的样式以帮助您入门。