共用方式為


x:Shared 屬性

當設定為 false時,修改 WPF 資源擷取行為,讓屬性化資源的要求為每個要求建立新的實例,而不是為所有要求共用相同的實例。

XAML 屬性使用方式

<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 使用方式中指定,而且必須使用預設 WPF 行為或在載入路徑上的中繼 XAML 節點資料流中處理,如果使用 .NET XAML 服務及其 XAML 讀取器處理。

x:Shared="false" 的案例是,如果您將 FrameworkElementFrameworkContentElement 衍生類別定義為資源,然後將專案資源引入內容模型。 x:Shared="false" 可讓元素資源在相同的集合中多次導入 (例如 UIElementCollection)。 若沒有 x:Shared="false",此作業無效,因為集合會強制執行其內容的唯一性。 不過,x:Shared="false" 行為會建立另一個相同的資源實例,而不是傳回相同的實例。

另一個 x:Shared="false" 案例是,如果您使用動畫值的 Freezable 資源,但想要根據每個動畫修改資源。

false 的字串處理不區分大小寫。

在 WPF 中,x:Shared 只有在下列情況下才有效:

另請參閱