我正在创建一个在我的应用程序中使用的常见样式的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="" />
</Setter.Value>
</Setter>
</Style>
如果我在页面上仅应用样式一个AppbarButton就可以了,但是如果我想要两个具有相同样式的按钮,我会收到以下错误:
The parameter is incorrect
如果我删除了样式中的图标属性,那就没问题(没有错误)... 但那种错过了这一点......
任何人都有类似的经历吗?也许...
感谢您的帮助。
答案 0 :(得分:2)
错误HRESULT E_Fail已从调用COM组件返回。
第二个AppBarButton
使用此样式时会发生此错误。当对样式或事件处理程序的引用不存在或不与XAML的上下文相关时,通常会发生此错误,您可以看到问题的异常信息:
如果您阅读本文档:XAML resources must be shareable,您会发现:
用作资源的自定义类型在其继承中不能包含UIElement类,因为UIElement永远不可共享(它总是用于表示存在于对象中一个位置的一个UI元素)您的运行时应用程序的图表。)
AppBarButton
UIElement
或Icon property的FontIcon是否来自Icon
,所以我猜这就是为什么这个属性可以在资源词典。
此外,我会考虑这是否是为样式中每个AppBarButton
定义Content
属性的正确方向,通常我希望为每个按钮指定一个不同的图标作为内容。
但如果您坚持这样做,我可以通过定义AppBarButton
的{{1}}为您提供解决方法,这是您AppBarButton
的构建:
您使用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="" />
</DataTemplate>
</Setter.Value>
</Setter>
</Style>