大多数AppBar按钮都基于StandardStyles中包含的AppBarButtonStyle样式。要自定义按钮的文本,您需要设置附加属性AutomationProperties.Name;要自定义按钮中的图标,您需要设置Content属性,并且出于可访问性原因,设置AutomationProperties.AutomationId附加属性也是一个好主意。以下是使用此方法自定义的按钮示例:
<Style x:Key="FolderButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}">
<Setter Property="AutomationProperties.AutomationId" Value="FolderAppBarButton"/>
<Setter Property="AutomationProperties.Name" Value="Folder"/>
<Setter Property="Content" Value=""/>
</Style>
如上所述,要自定义图标,您需要设置
Content属性。挑战在于如何设置内容以显示您的自定义矢量艺术品。
事实证明,您可以将任何路径Xaml(甚至是您自己的)放入
Viewbox中以更改其比例。这是我的第一种方法,但它不起作用。实际上,似乎每当您使用扩展符号的Xaml来设置按钮的
Content属性时,它都不起作用。
<Style x:Key="SquareButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource AppBarButtonStyle}">
<Setter Property="AutomationProperties.AutomationId" Value="SquareAppBarButton"/>
<Setter Property="AutomationProperties.Name" Value="Square"/>
<Setter Property="Content">
<Setter.Value>
<Rectangle Fill="Blue" Width="20" Height="20" />
</Setter.Value>
</Setter>
我认为这实际上是一个漏洞,但幸运的是有一个解决方法。
Tim Heuer写了一篇关于如何将Xaml路径作为按钮艺术品的最简单方法的
优秀文章。该文章在此处:
http://timheuer.com/blog/archive/2012/09/03/using-vectors-as-appbar-button-icons.aspx
简而言之,您需要定义一个样式,以正确设置所有绑定:
<Style x:Key="PathAppBarButtonStyle" BasedOn="" TargetType="ButtonBase">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<Path Width="20" Height="20"
Stretch="Uniform"
Fill="}"
Data="}"/>
</DataTemplate>
</Setter.Value>
</Setter>
然后,你创建一个从该样式继承的样式,并将你的路径粘贴进去。这里是你上面列出的艺术品的样式:
<Style x:Key="CrossButtonStyle" TargetType="ButtonBase" BasedOn="{StaticResource PathAppBarButtonStyle}">
<Setter Property="AutomationProperties.AutomationId" Value="CrossAppBarButton"/>
<Setter Property="AutomationProperties.Name" Value="Cross"/>
<Setter Property="Content" Value="M372.58272,134.72445C167.96301,134.72445 2.06820310000001,300.58818 2.06820310000001,505.20789 2.06820310000001,709.8276 167.96301,875.72241 372.58272,875.72241 577.20243,875.72241 743.06616,709.8276 743.06616,505.20789 743.06616,300.58818 577.20243,134.72445 372.58272,134.72445z M280.73888,251.77484L455.94149,251.77484 455.94149,413.70594 628.16035,413.70594 628.16035,588.97071 455.94149,588.97071 455.94149,773.71514 280.73888,773.71514 280.73888,588.97071 106.22005,588.97071 106.22005,413.70594 280.73888,413.70594 280.73888,251.77484z"/>
</Style>
最后,在您的AppBar中使用它,如下所示:
:
<Button Style="{StaticResource CrossButtonStyle}" />
我们将提供开发支持、设计支持以及更多令人兴奋的好处:http://bit.ly/winappsupport