x:Shared 属性

更新:2007 年 11 月

当设置为 false 时,会修改 Windows Presentation Foundation (WPF) 资源检索行为,以便资源请求会为每个请求创建一个新实例,而不是所有请求共享同一个实例。

XAML 属性用法

<ResourceDictionary>
  <object x:Shared="false".../>
</ResourceDictionary>

备注

资源的默认 x:Shared 条件是 true。此条件意味着任何给定资源请求都始终返回同一个实例。修改通过资源 API(如 FindResource)返回的对象或者直接在 ResourceDictionary 内部修改对象会更改原始资源。如果对该资源的引用是动态资源引用,则该资源的使用者将获得更改后的资源。(如果对资源的引用是静态资源引用,则在 XAML 处理时间之后的资源更改是不相关的。有关静态资源引用与动态资源引用的对比的详细信息,请参见资源概述。)

指定 x:Shared="true" 并不常见,因为这已经是默认行为。对于 x:Shared,没有直接的代码等效项。

指定 x:Shared="false" 的一种情况是:您将 FrameworkElementFrameworkContentElement 派生类定义为资源,并将此元素资源引入内容模型。x:Shared="false" 使得元素资源可以多次引入到同一个集合(如 UIElementCollection)中。如果没有 x:Shared="false",这将是不合法的,因为集合强制执行内容的唯一性。但是 x:Shared="false" 行为主要是创建资源的另一个完全相同的实例,而不是返回同一个实例。

指定 x:Shared="false" 的另一种情况是:您对动画值使用一个 Freezable 资源,但希望在每个动画的基础上修改此资源。

"false" 字符串的处理不区分大小写。

x:Shared 只有在满足以下条件的情况下才是合法的:

请参见

概念

资源概述

参考

ResourceDictionary

其他资源

基元素