次の方法で共有


x:Shared 属性

更新 : 2007 年 11 月

false に設定されると、Windows Presentation Foundation (WPF) リソース取得動作を変更して、すべての要求で同じインスタンスを共有するのではなく、リソースに対して要求があるたびに新しいインスタンスが作成されるようにします。

XAML 属性の使用方法

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

解説

リソースに対する x:Shared の既定の状態は true です。この状態は、指定したすべてのリソース要求が常に同じインスタンスを返すことを意味します。FindResource などのリソース API を通して返されるオブジェクトを変更するか、または ResourceDictionary 内で直接オブジェクトを変更すると、元のリソースが変更されます。そのリソースへの参照が動的リソース参照であった場合、そのリソースのコンシューマは変更されたリソースを取得するようになります (リソースへの参照が静的リソース参照であった場合は、XAML 処理後にリソースを変更しても無意味です。静的リソース参照と動的リソース参照の詳細な比較については、「リソースの概要」を参照してください)。

x:Shared="true" は既定の設定であるため、これを指定することはあまりありません。x:Shared に同等の直接的なコードはありません。

x:Shared="false" を指定するシナリオの 1 つに、FrameworkElement または FrameworkContentElement 派生クラスをリソースとして定義し、その要素リソースをコンテンツ モデルに導入する場合があります。x:Shared="false" を指定することで、要素リソースを同じコレクション (UIElementCollection など) に複数回導入できます。x:Shared="false" を指定しない場合は、コレクションの内容が一意であることが強制されるため、この操作が無効になります。ただし、x:Shared="false" の動作は、基本的には同じインスタンスを返すのではなく、リソースの同一インスタンスを新たに作成します。

x:Shared="false" を指定するもう 1 つのシナリオは、アニメーションの値用に Freezable リソースを使用し、そのリソースをアニメーションごとに変更する場合です。

"false" 文字列の処理では、大文字と小文字が区別されません。

x:Shared は、次の条件下でのみ有効となります。

参照

概念

リソースの概要

参照

ResourceDictionary

その他の技術情報

基本要素