UWP资源字典样式错误:参数不正确

3
我正在制作一个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
我测试了你的代码,它运行得很好。请分享你的ResourceDictionary和app.xaml。 - RicardoPons
1个回答

4

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

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

如果您阅读此文档:XAML资源必须可共享,您会发现:

用作资源的自定义类型不能具有其继承中的UIElement类,因为UIElement永远无法共享(它始终旨在表示运行时应用程序对象图中存在于一个位置的一个UI元素)。

AppBarButtonIcon 属性FontIcon 都派生自UIElement,因此我认为这就是为什么无法在资源字典中对此属性进行样式设置的原因。

此外,我会考虑是否为每个AppBarButton在样式中定义Icon属性是正确的方向,通常我喜欢为每个按钮提供不同的图标作为内容。

但如果您坚持这样做,我可以提供一个解决方法,即通过定义AppBarButtonContent,来构造您的AppBarButtonenter 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>

太棒了,它运行得非常好 :) 另外,感谢您详细解释为什么我的方法不可能起作用...我对这部分毫不知情:'将自定义类型用作资源时,不能在其继承中使用UIElement类' 非常感谢! - evil gugl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接