如何将静态资源设置为内容属性(默认内容)
How to set a static resource as content property (default content)
我有一个 prism 的 InteractionRequestTrigger
触发动作实现,看起来像这样:
<prism:InteractionRequestTrigger SourceObject="{Binding MyRequest}" >
<infInt:PopupWindowAction>...
</infInt:PopupWindowAction>
</prism:InteractionRequestTrigger>
现在我想将 PopupWindowAction
提取到静态资源中,因此它看起来像这样:
<Window.Resources>
<infInt:PopupWindowAction x:Key="Foo" >
...
</infInt:PopupWindowAction>
</Window.Resources>
<prism:InteractionRequestTrigger SourceObject="{Binding MyRequest}" >
--- use the resource Foo ---
</prism:InteractionRequestTrigger>
如何使用其中包含密钥 Foo 的静态资源?
通过反思 InteractionRequestTrigger
我发现它的 ContentProperty 在 System.Windows.Interactivity.TriggerBase
中设置为 [ContentProperty("Actions")]
但是因为它只有一个 getter,我不能使用 Actions 作为参数来设置 foo:
<prism:InteractionRequestTrigger Actions="{StaticResource Foo}" SourceObject="{Binding MyRequest}" />
Error 1 The property "Actions" does not have an accessible setter.
Error 3 'Actions' property is read-only and cannot be set from markup.
如何使用Foo
?
解决方法很简单。使用 StaticResourceExtension class.
<i:Interaction.Triggers>
<prism:InteractionRequestTrigger SourceObject="{Binding MyRequest}">
<StaticResource ResourceKey="Foo"/>
</prism:InteractionRequestTrigger>
</i:Interaction.Triggers>
我有一个 prism 的 InteractionRequestTrigger
触发动作实现,看起来像这样:
<prism:InteractionRequestTrigger SourceObject="{Binding MyRequest}" >
<infInt:PopupWindowAction>...
</infInt:PopupWindowAction>
</prism:InteractionRequestTrigger>
现在我想将 PopupWindowAction
提取到静态资源中,因此它看起来像这样:
<Window.Resources>
<infInt:PopupWindowAction x:Key="Foo" >
...
</infInt:PopupWindowAction>
</Window.Resources>
<prism:InteractionRequestTrigger SourceObject="{Binding MyRequest}" >
--- use the resource Foo ---
</prism:InteractionRequestTrigger>
如何使用其中包含密钥 Foo 的静态资源?
通过反思 InteractionRequestTrigger
我发现它的 ContentProperty 在 System.Windows.Interactivity.TriggerBase
中设置为 [ContentProperty("Actions")]
但是因为它只有一个 getter,我不能使用 Actions 作为参数来设置 foo:
<prism:InteractionRequestTrigger Actions="{StaticResource Foo}" SourceObject="{Binding MyRequest}" />
Error 1 The property "Actions" does not have an accessible setter.
Error 3 'Actions' property is read-only and cannot be set from markup.
如何使用Foo
?
解决方法很简单。使用 StaticResourceExtension class.
<i:Interaction.Triggers>
<prism:InteractionRequestTrigger SourceObject="{Binding MyRequest}">
<StaticResource ResourceKey="Foo"/>
</prism:InteractionRequestTrigger>
</i:Interaction.Triggers>