【发布时间】:2016-12-09 16:39:25
【问题描述】:
我正在尝试在 <Style.Resources> 元素内显式声明一个 StaticResource,但是当我尝试运行应用程序时出现此错误:
无法将“System.Windows.Media.Effects.DropShadowEffect”类型的对象转换为“System.Windows.ResourceDictionary”类型。
以下是相关代码:
<DropShadowEffect x:Key="Sombra" Opacity="0.5" ShadowDepth="3" BlurRadius="5"/>
<Style x:Key="BotãoNavegaçãoBase" TargetType="{x:Type ButtonBase}" BasedOn="{StaticResource BotãoGeometria}">
<Style.Resources>
<StaticResource x:Key="PathShadow" ResourceKey="Sombra"/>
</Style.Resources>
</Style>
如果按照错误消息提示,我将 <StaticResource/> 包装在 ResourceDictionary 中,我会收到“缺少密钥”错误:
<Style.Resources>
<ResourceDictionary>
<StaticResource x:Key="PathShadow" ResourceKey="Sombra"/>
</ResourceDictionary>
</Style.Resources>
“StaticResourceHolder”对象缺少键值。
【问题讨论】:
-
这不是
StaticResource的用途。 @ChrisW。在我仍在为资源的多次使用测试相同的确切答案时发布了他的答案。工作正常。如果您需要创建同一资源的多个实例,<sys:Double x:Key="ProfundidadeDeSombra">3</sys:Double> <DropShadowEffect x:Key="Sombra" Opacity="{StaticResource ProfundidadeDeSombra}" ...等。 -
@EdPlunkett 我在 SO 中看到了很多关于这个问题的答案,我非常有信心理解它,并且我上面的代码应该可以正常运行。我向您转发我仍然有同样的问题:为什么我会在运行时收到异常,而大多数人抱怨这主要是设计时问题?有什么想法吗?
-
@EdPlunkett,您还提到“这不是 StaticResource 的用途”。你到底是什么意思?也就是说,我的示例的哪一部分不是 StaticResource 的用途是什么?您可以在my former question 中对我的意图有更广泛的了解
-
我指的是使用
StaticResource将现有资源插入另一个ResourceDictionary。我从来没有这样做过。 -
你能告诉我其他人用
<StaticResource ...做同样事情的例子吗?我也无法让它工作。
标签: wpf xaml resourcedictionary staticresource