我想为UWP按钮创建自定义样式。因此,我从MSDN复制了button style template,然后仅修改了"PointerOver"
可视状态以确保我掌握了要旨。
以下是我到目前为止的摘要。它在一个名为CustomButtonStyleTemplate.xaml
的单独文件中,在我的主要xaml文件中,我是使用<ResourceDictionary.MergedDictionaries/>
导入的。
<Style TargetType="Button" x:Key="SpecialButton">
...
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid x:Name="ButtonGrid" Background="{TemplateBinding Background}">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal">
<Storyboard>
<PointerUpThemeAnimation Storyboard.TargetName="ButtonGrid" />
</Storyboard>
</VisualState>
<VisualState x:Name="PointerOver">
<VisualState.Setters>
<Setter Property="ButtonGrid.Opacity" Value="0.5"/>
</VisualState.Setters>
</VisualState>
.
.
.
很不幸,我的自定义<Setter/>
产生以下错误:The XAML Binary Format (XBF) generator reported syntax error
。
每当我在网上寻找相似的代码时,大多数人都会将Property
的{{1}}字段设置为类似<Setter/>
的位置,其中某些MyButton.Opacity
元素具有{{1} }。
问题是,我希望这种样式适用于很多我将明确选择的按钮,因此为什么我为{{1 }}。
我认为,由于<Button/>
具有x:Name="MyButton"
,因此我应该使用x:Key="SpecialButton"
,但显然我弄错了。我应该注意,<Style/>
也不起作用。
那我该如何通用地指称该样式应用于哪个按钮的<Grid/>
属性?
答案 0 :(得分:1)
将Property="ButtonGrid.Opacity"
替换为Target="ButtonGrid.Opacity"
。
赞:
<Setter Target="ButtonGrid.Opacity" Value="0.5"/>