【问题标题】:Property attribute of Setter in VisualState.Setters generates syntax errorVisualState.Setters 中 Setter 的 Property 属性产生语法错误
【发布时间】:2018-06-25 17:04:24
【问题描述】:

我想为我的 UWP 按钮制作自定义样式。所以我从 MSDN 复制了 button style template,然后修改了 "PointerOver" Visual State 以确保我掌握了它的要点。

以下是我目前所拥有的 sn-p。它位于一个名为 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>
                            .
                            .
                            .

不幸的是,我的自定义 &lt;Setter/&gt; 正在生成以下错误:The XAML Binary Format (XBF) generator reported syntax error

每当我在网上查找类似代码时,大多数人都会将&lt;Setter/&gt;Property 字段设置为MyButton.Opacity,其中一些&lt;Button/&gt; 元素具有x:Name="MyButton"

问题是,我希望将这种样式应用于 许多 我将明确选择的按钮,因此我将 x:Key="SpecialButton" 指定为 &lt;Style/&gt;

我想既然&lt;Grid/&gt;x:Name="ButtonGrid",我应该使用ButtonGrid.Opacity 但显然我错了。我应该注意到ButtonGrid.(UIElement.Opacity) 也不起作用。

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

【问题讨论】:

  • 试试这个:&lt;Setter Target="ButtonGrid.Opacity" Value="0.5"/&gt;
  • @MDMuziburRahman 的建议是正确的。请注意,如果您将 Grid 的名称更改为“ButtonGrid”,您还需要将该样式中的所有“RootGrid”更改为“ButtonGrid”。因为在这种风格中,“RootGrid”用于其他视觉状态。触发其他视觉状态时会引发异常。
  • @MDMuziburRahman 你可以就这个案子做出回答。

标签: xaml uwp win-universal-app uwp-xaml


【解决方案1】:

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

像这样:

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

【讨论】:

  • 工作就像一个魅力!
猜你喜欢
  • 1970-01-01
  • 2018-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-16
  • 1970-01-01
  • 2020-03-07
相关资源
最近更新 更多