DependencyProperty.AddOwner 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
加入其他類型,以作為已註冊至某個類型之相依性屬性的擁有者。
多載
AddOwner(Type) |
加入其他類型,作為已註冊之相依性屬性的擁有者。 |
AddOwner(Type, PropertyMetadata) |
加入另一個類型作為已註冊的相依性屬性的擁有者,並提供在所提供擁有者類型上存在之相依性屬性的相依性屬性中繼資料。 |
AddOwner(Type)
加入其他類型,作為已註冊之相依性屬性的擁有者。
public:
System::Windows::DependencyProperty ^ AddOwner(Type ^ ownerType);
public System.Windows.DependencyProperty AddOwner (Type ownerType);
member this.AddOwner : Type -> System.Windows.DependencyProperty
Public Function AddOwner (ownerType As Type) As DependencyProperty
參數
- ownerType
- Type
要加入為此相依性屬性之擁有者的類型。
傳回
原始 DependencyProperty 識別項的參考,它識別相依性屬性。 應該藉由加入類別作為 public static readonly
欄位來公開此識別項。
備註
這個方法可讓屬性系統在最初未註冊該相依性屬性的類型上辨識相依性屬性。
一般而言, AddOwner 是用來將相依性屬性新增至尚未透過 Managed 類別繼承公開該相依性屬性的類別, (類別繼承會導致衍生類別繼承包裝函式屬性,因此會提供已) 相依性屬性的一般成員資料表存取權。 AddOwner 可讓屬性系統在一開始未註冊該相依性屬性的類型上辨識相依性屬性。
此簽章不允許指定中繼資料。 當您使用此方法時,會自動為新的 DependencyProperty 及其擁有者類型產生中繼資料。 自動產生的中繼資料是從已定義這個屬性的所有基底類型合併中繼資料的結果。 如果沒有合併的中繼資料可用,則會使用 屬性的預設中繼資料。 如果使用 方法註冊 RegisterAttached 屬性,則預設中繼資料與呼叫時 RegisterAttached 所建立的中繼資料相同。 否則,會 PropertyMetadata 建立 物件, DefaultValue 並將 屬性設定為屬性類型的預設值,而 的 PropertyMetadata 所有其他屬性都會設定為 null
。
AddOwner(Type, PropertyMetadata)如果您想要提供相依性屬性版本的中繼資料,如新增至提供的型別,請使用簽章。
這個方法的傳回值通常用來宣告和公開相依性屬性,方法是儲存相依性屬性識別碼。 如果您想要針對相依性屬性呼叫屬性系統 API,識別碼會提供相依性屬性的存取權,特別是在新增擁有者類別上時。 原始擁有者和新增擁有者的相同屬性名稱應該用來指出類似的功能。 您應該使用 DependencyProperty 方法的 AddOwner 傳回值來定義相依性屬性識別碼,以及針對使用 AddOwner 新增至型別的相依性屬性宣告 CLR 屬性包裝函式。
建立 AddOwner WPF 內宣告的相依性屬性時,會使用上述建議的方法。 例如,和 Control 都 Border 定義 BorderBrush
具有類似功能的相依性屬性。
Control根據原始擁有者 Border 及其已註冊的 BorderBrushProperty 相依性屬性識別碼呼叫 AddOwner ,定義其 BorderBrush
屬性至屬性系統。 然後,傳 AddOwner 回值會用來為新增的擁有者上該屬性建立新的靜態 DependencyProperty 欄位 (BorderBrushProperty) ,而且 BorderBrush
也會宣告屬性包裝函式。
適用於
AddOwner(Type, PropertyMetadata)
加入另一個類型作為已註冊的相依性屬性的擁有者,並提供在所提供擁有者類型上存在之相依性屬性的相依性屬性中繼資料。
public:
System::Windows::DependencyProperty ^ AddOwner(Type ^ ownerType, System::Windows::PropertyMetadata ^ typeMetadata);
public System.Windows.DependencyProperty AddOwner (Type ownerType, System.Windows.PropertyMetadata typeMetadata);
member this.AddOwner : Type * System.Windows.PropertyMetadata -> System.Windows.DependencyProperty
Public Function AddOwner (ownerType As Type, typeMetadata As PropertyMetadata) As DependencyProperty
參數
- ownerType
- Type
要加入為此相依性屬性之擁有者的類型。
- typeMetadata
- PropertyMetadata
限定存在於所提供類型之相依性屬性的中繼資料。
傳回
原始 DependencyProperty 識別項的參考,它識別相依性屬性。 應該藉由加入類別作為 public static readonly
欄位來公開此識別項。
備註
這個方法可讓屬性系統在最初未註冊該相依性屬性的類型上辨識相依性屬性。
這個方法的傳回值是用來宣告和公開相依性屬性,特別是在新增擁有者類別上時。 一般而言,原始擁有者和新增擁有者的相同屬性名稱應該用來指出類似的功能。 針對使用 AddOwner 新增至型別的相依性屬性,公開識別碼和新 CLR 屬性包裝函式是不錯的做法。
在 AddOwner WPF 內宣告的 API 時,會使用上述建議的方法。 例如,和 Control 都 Border 定義 BorderBrush
具有類似功能的相依性屬性。
Control藉由呼叫 AddOwner 原始擁有者 Border 及其已註冊的 BorderBrushProperty 相依性屬性識別碼,定義其 BorderBrush
屬性至屬性系統。 然後,傳 AddOwner 回值會用來建立靜態 DependencyProperty 欄位 (BorderBrushProperty 新增擁有者上該屬性的) ,而且 BorderBrush
也會宣告屬性包裝函式。
新增的擁有者相依性屬性識別碼應該用於 之類的 GetValue 作業。 不過,涉及我們新增為具有不同中繼資料之類別類型或實例的類型特定作業仍會傳回預期的結果。 即使原始 (不是新增的擁有者) 相依性屬性識別碼是在呼叫 或 GetValueGetMetadata 等方法中指定,也是如此。 新增擁有者的中繼資料會依 AddOwner 呼叫本身進行,不一定由新增擁有者類別識別碼欄位獨佔參考。 不過,對於使用 AddOwner 新增至型別的相依性屬性,公開識別碼和新 CLR 屬性包裝函式是很好的做法,因為無法這麼做會建立屬性 CLR 與 XAML 標記法之間的差異。
提供的中繼資料會與相依性屬性的屬性中繼資料合併,因為它存在於基底擁有者上。 原始基底中繼資料中指定的任何特性都會保存。 只有新中繼資料中特別變更的特性,才會覆寫基底中繼資料的特性。 如果新的中繼資料中指定了某些特性,例如 DefaultValue ,則會加以取代。 其他專案,例如 PropertyChangedCallback ,會合並。 最後,合併行為取決於用於覆寫的屬性元資料類型,因此此處所述的行為適用于 WPF 相依性屬性所使用的現有屬性中繼資料類別。 如需詳細資訊,請參閱 相依性屬性中繼資料 和 Framework 屬性中繼資料。