VisualState.Setters 中 Setter 的 属性 属性产生语法错误

Property attribute of Setter in VisualState.Setters generates syntax error

我想为我的 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.

每当我在网上寻找类似的代码时,大多数人都会将 <Setter/>Property 字段设置为类似 MyButton.Opacity 的内容,其中某些 <Button/> 元素具有 x:Name="MyButton"

问题是,我希望这种样式应用于许多 个按钮,我将明确 选择这些按钮,因此我指定x:Key="SpecialButton"<Style/>.

我想既然 <Grid/>x:Name="ButtonGrid",我应该使用 ButtonGrid.Opacity 但显然我错了。我应该注意到 ButtonGrid.(UIElement.Opacity) 也没有用。

那么我应该如何笼统地引用此样式适用于哪个按钮的 Opacity 属性?

Property="ButtonGrid.Opacity"替换为Target="ButtonGrid.Opacity"

像这样:

<Setter Target="ButtonGrid.Opacity" Value="0.5"/>