如何将静态资源设置为内容属性(默认内容)

时间:2015-02-04 18:47:20

标签: c# wpf xaml prism

我为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我发现其内容属性设置为System.Windows.Interactivity.TriggerBase[ContentProperty("Actions")]

但由于它只有一个getter,我不能使用Actions作为参数来设置foo:

  <prism:InteractionRequestTrigger Actions="{StaticResource Foo}" SourceObject="{Binding MyRequest}" />
  

错误1属性&#34;操作&#34;没有可访问的二传手   错误3&#39;操作&#39; property是只读的,不能通过标记设置。

如何使用Foo

1 个答案:

答案 0 :(得分:1)

解决方案非常简单。使用StaticResourceExtension类。

<i:Interaction.Triggers>
    <prism:InteractionRequestTrigger SourceObject="{Binding MyRequest}">
        <StaticResource ResourceKey="Foo"/>
    </prism:InteractionRequestTrigger>
</i:Interaction.Triggers>