UWP ResourceDictionary样式错误:参数不正确

时间:2016-02-25 22:54:45

标签: xaml win-universal-app resourcedictionary

我正在创建一个在我的应用程序中使用的常见样式的ResourceDictionary,其中之一是:

<Style x:Key="ME_BASE_AppbarButtonSaveStyle"
       TargetType="AppBarButton">
    <Setter Property="Label"
            Value="Save" />
    <Setter Property="ToolTipService.ToolTip"
            Value="Save" />
    <Setter Property="Icon">
        <Setter.Value>
            <FontIcon FontFamily="Segoe MDL2 Assets"
                      Glyph="&#xE105;" />
        </Setter.Value>
    </Setter>
</Style>

如果我在页面上仅应用样式一个AppbarButton就可以了,但是如果我想要两个具有相同样式的按钮,我会收到以下错误:

The parameter is incorrect

如果我删除了样式中的图标属性,那就没问题(没有错误)... 但那种错过了这一点......

任何人都有类似的经历吗?也许...

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

  

错误HRESULT E_Fail已从调用COM组件返回。

第二个AppBarButton使用此样式时会发生此错误。当对样式或事件处理程序的引用不存在或不与XAML的上下文相关时,通常会发生此错误,您可以看到问题的异常信息: enter image description here

如果您阅读本文档:XAML resources must be shareable,您会发现:

  

用作资源的自定义类型在其继承中不能包含UIElement类,因为UIElement永远不可共享(它总是用于表示存在于对象中一个位置的一个UI元素)您的运行时应用程序的图表。)

AppBarButton UIElementIcon propertyFontIcon是否来自Icon,所以我猜这就是为什么这个属性可以在资源词典。

此外,我会考虑这是否是为样式中每个AppBarButton定义Content属性的正确方向,通常我希望为每个按钮指定一个不同的图标作为内容。

但如果您坚持这样做,我可以通过定义AppBarButton的{​​{1}}为您提供解决方法,这是您AppBarButton的构建: enter image description here

您使用FontIcon作为AppBarButton的内容,因此我们可以像这样修改您的风格:

<Style x:Key="ME_BASE_AppbarButtonSaveStyle" TargetType="AppBarButton">
    <Setter Property="Label" Value="Save" />
    <Setter Property="ToolTipService.ToolTip" Value="Save" />
    <Setter Property="ContentTemplate">
        <Setter.Value>
            <DataTemplate>
                <FontIcon FontFamily="Segoe MDL2 Assets"
              Glyph="&#xE105;" />
            </DataTemplate>
        </Setter.Value>
    </Setter>
</Style>