x:Shared 屬性
當設定為 false
時,會修改 WPF 資源擷取行為,讓屬性化資源的要求為每個要求建立新的實例,而不是為所有要求共用相同的實例。
XAML Attribute Usage
<ResourceDictionary>
<object x:Shared="false".../>
</ResourceDictionary>
備註
x:Shared
會對應至 XAML 語言 XAML 命名空間,並由 .NET XAML 服務及其 XAML 讀取器辨識為有效的 XAML 語言專案。 不過,的已陳述功能 x:Shared
僅適用于 WPF 應用程式和 WPF XAML 剖析器。 在 WPF 中, x:Shared
只有在屬性套用至 WPF ResourceDictionary 中存在的 物件時,才有用。 其他使用方式不會擲回剖析例外狀況或其他錯誤,但它們沒有作用。
在 XAML 語言規格中未指定 的意義 x:Shared
。 其他 XAML 實作,例如建置在 .NET XAML 服務上的 XAML 實作,不一定提供資源分享支援。 這類 XAML 實作可以在也使用 x:Shared
值的支援架構中提供類似的行為。
在 WPF 中,資源的預設 x:Shared
條件是 true
。 此條件表示任何指定的資源要求一律會傳回相同的實例。
修改透過資源 API 傳回的物件,例如 FindResource ,或修改 直接在 內 ResourceDictionary 的物件會變更原始資源。 如果該資源的參考是動態資源參考,該資源的取用者會取得變更的資源。
如果資源的參考是靜態資源參考,則 XAML 處理時間之後對資源的變更無關。 如需靜態與動態資源參考的詳細資訊,請參閱 XAML 資源概觀(WPF .NET)。
明確指定 x:Shared="true"
很少完成,因為這是預設值。 WPF 物件模型中沒有對等 x:Shared
的直接程式碼;它只能在 XAML 使用方式中指定,而且只有在使用 .NET XAML 服務及其 XAML 讀取器處理時,才能由預設 WPF 行為或在載入路徑上的中繼 XAML 節點資料流程中處理。
的案例 x:Shared="false"
是,如果您將 或 FrameworkContentElement 衍生類別定義為 FrameworkElement 資源,然後將專案資源引入 con帳篷模式l。 x:Shared="false"
可讓專案資源在相同的集合中多次導入 (例如 , 。 UIElementCollection 如果沒有 x:Shared="false"
,則無效,因為集合會強制執行其內容的唯一性。 不過,行為 x:Shared="false"
會建立另一個相同的資源實例,而不是傳回相同的實例。
的另一 Freezable 個案例 x:Shared="false"
是,如果您使用資源作為動畫值,但想要根據每個動畫修改資源。
的字串處理 false
不區分大小寫。
在 WPF 中, x:Shared
只有在下列情況下才有效:
ResourceDictionary包含 具有
x:Shared
之專案的 必須編譯。 ResourceDictionary不能位於鬆散的 XAML 內,或用於主題。ResourceDictionary包含專案的 不可巢狀于另一個 ResourceDictionary 內。 例如,您無法將 用於
x:Shared
內已是 ResourceDictionary 專案之 中的 ResourceDictionaryStyle 專案。