自定義類型和連結庫的 XAML 相關 CLR 屬性
本主題描述 .NET XAML 服務所定義的 Common Language Runtime (CLR) 屬性。 它也描述 .NET 中定義的其他 CLR 屬性,這些屬性具有應用程式對元件或類型的 XAML 相關案例。 利用這些 CLR 屬性將元件、類型或成員歸因於您的類型,提供與類型相關的 XAML 類型系統資訊。 資訊會提供給任何使用 .NET XAML 服務的 XAML 取用者,直接或透過專用的 XAML 讀取器和 XAML 寫入器來處理 XAML 節點數據流。
自定義類型和自定義成員的 XAML 相關 CLR 屬性
使用CLR屬性需要您使用整體CLR來定義類型,否則無法使用這類屬性。 如果您使用 CLR 來定義型別備份,則 .NET XAML 服務 XAML 寫入器所使用的預設 XAML 架構內容可以透過反省對備份元件讀取 CLR 屬性。
下列各節說明您可以套用至自定義類型或自定義成員的 XAML 相關屬性。 每個 CLR 屬性都會傳達與 XAML 類型系統相關的資訊。 在載入路徑中,屬性化資訊可協助 XAML 讀取器形成有效的 XAML 節點數據流,或協助 XAML 寫入器產生有效的物件圖形。 在儲存路徑中,屬性化資訊可協助 XAML 讀取器形成有效的 XAML 節點數據流,以重建 XAML 類型系統資訊;或它會宣告 XAML 寫入器或其他 XAML 取用者的串行化提示或需求。
AmbientAttribute
參考檔: AmbientAttribute
適用於: 支援可附加屬性的類別、屬性或 get
存取子成員。
自變數: 無
AmbientAttribute 表示在 XAML 的環境屬性概念下,應該解譯屬性或採用屬性類型的所有屬性。 環境概念與 XAML 處理器如何判斷成員類別擁有者有關。 環境屬性是一個屬性,在建立物件圖形時,值預期可在剖析器內容中使用,但建立的即時 XAML 節點集會暫停一般類型成員查閱。
環境概念可以套用至可附加成員,這些成員在CLR屬性定義 AttributeTargets的方式方面不會以屬性表示。 方法屬性使用方式應該只適用於 get
支援 XAML 可附加使用方式的存取子。
建構函式ArgumentAttribute
參考檔案: ConstructorArgumentAttribute
適用於: 類別
自變數: 指定符合單一建構函式自變數之屬性名稱的字串。
ConstructorArgumentAttribute 指定物件可以使用非無參數建構函式語法初始化,而指定名稱的 屬性則提供建構資訊。 這項資訊主要供 XAML 序列化之用。 如需詳細資訊,請參閱ConstructorArgumentAttribute。
ContentPropertyAttribute
參考檔案: ContentPropertyAttribute
適用於: 類別
自變數: 指定屬性類型成員名稱的字串。
ContentPropertyAttribute 表示 自變數所命名的屬性應該做為該類型的 XAML 內容屬性。 XAML 內容屬性定義會繼承至可指派給定義型別的所有衍生類型。 您可以在特定衍生類型上套用 ContentPropertyAttribute ,以覆寫特定衍生類型的定義。
對於做為 XAML 內容屬性的屬性,可以在 XAML 使用方式中省略屬性的屬性項目標記。 一般而言,您可以指定 XAML 內容屬性,以提升內容和內含專案模型的簡化 XAML 標記。 因為只有一個成員可以指定為 XAML 內容屬性,所以您有時有設計選擇,以決定哪一個類型容器屬性應該指定為 XAML 內容屬性。 其他容器屬性必須與明確的屬性元素搭配使用。
在 XAML 節點數據流中,XAML 內容屬性仍會產生 StartMember
和 EndMember
節點,並使用的屬性 XamlMember名稱。 若要判斷成員是否為 XAML 內容屬性,請從位置檢查XamlType值,並取得的值ContentProperty。StartObject
ContentWrapperAttribute
參考檔案: ContentWrapperAttribute
適用於: 類別,特別是集合類型。
自變數:Type指定要作為外部內容之內容包裝函式類型的型別。
ContentWrapperAttribute 會指定相關聯集合類型上的一或多個類型,這些類型將用來包裝外部內容。 外部內容是指內容類型系統條件約束在 content 屬性類型上不會擷取 XAML 用於擁有類型的所有可能內容案例的情況。 例如,特定型別內容的 XAML 支援可能支援強型別泛型 Collection<T>中的字串。 內容包裝函式適用於將既有標記慣例移轉至 XAML 集合可指派值的概念,例如移轉與文字相關的 con 帳篷模式 ls。
若要指定多個內容包裝函式類型,請多次套用 屬性。
DependsOnAttribute
參考檔案: DependsOnAttribute
適用於: 屬性
自變數: 指定屬性類型另一個成員名稱的字串。
DependsOnAttribute 表示屬性化屬性相依於另一個屬性的值。 將此屬性套用至屬性定義可確保先在 XAML 物件寫入中處理相依屬性。 的使用 DependsOnAttribute 方式會針對必須遵循特定剖析順序才能建立有效對象的類型,指定屬性的特殊案例。
您可以將多個 DependsOnAttribute 案例套用至屬性定義。
MarkupExtensionReturnTypeAttribute
參考檔案: MarkupExtensionReturnTypeAttribute
適用於: 必須是衍生型別的 MarkupExtension 類別。
自變數:Type,指定要預期做為ProvideValue
屬性MarkupExtension化 結果的最精確型別。
如需詳細資訊,請參閱 XAML 的標記延伸概觀。
NameScopePropertyAttribute
參考檔案: NameScopePropertyAttribute
適用於: 類別
自變數: 支援兩種屬性形式:
指定屬性型別上屬性名稱的字串。
指定屬性名稱的字串,以及 Type 定義具名屬性之型別的 。 此窗體用於將可附加成員指定為 XAML namescope 屬性。
NameScopePropertyAttribute 指定屬性,這個屬性會提供屬性類別的 XAML 命名範圍值。 XAML namescope 屬性應該參考實作 INameScope 並保存實際 XAML 命名範圍、其存放區和行為的物件。
RuntimeNamePropertyAttribute
參考檔案: RuntimeNamePropertyAttribute
適用於: 類別
自變數: 指定屬性類型上運行時間名稱屬性名稱的字串。
RuntimeNamePropertyAttribute 會報告對應至 XAML x:Name 指示詞之屬性之屬性。 屬性的類型必須是 String ,而且必須是可擦寫的。
定義會繼承至可指派給定義型別的所有衍生型別。 您可以在特定衍生類型上套用 RuntimeNamePropertyAttribute ,以覆寫特定衍生類型的定義。
TrimSurroundingWhitespaceAttribute
參考檔案: TrimSurroundingWhitespaceAttribute
適用於: 類型
自變數: 無。
TrimSurroundingWhitespaceAttribute 會套用至特定類型,這些類型可能會在空格符重要內容中顯示為子元素(具有 WhitespaceSignificantCollectionAttribute的集合所保留的內容)。 TrimSurroundingWhitespaceAttribute 主要與儲存路徑相關,但可藉由檢查 XamlType.TrimSurroundingWhitespace,在載入路徑的 XAML 類型系統中取得。 如需詳細資訊,請參閱 XAML 中的空格符處理。
TypeConverterAttribute
參考檔案: TypeConverterAttribute
適用於: 類別、屬性、方法(唯一 get
的 XAML 有效方法案例是支援可附加成員的存取子)。
自變數:Type的 TypeConverter。
TypeConverterAttribute 在 XAML 內容中參考自訂 TypeConverter。 這會 TypeConverter 提供自定義類型或該類型成員的類型轉換行為。
將 TypeConverterAttribute 屬性套用至您的類型,並參考類型轉換器實作。 您可以在類別、結構或介面上定義 XAML 的類型轉換器。 您不需要提供列舉型別轉換,該轉換會以原生方式啟用。
您的類型轉換子應該能夠從用於標記中屬性或初始化文字的字串轉換成您預期的目的地類型。 如需詳細資訊,請參閱 TypeConverters 和 XAML。
您也可以在特定屬性上建立 XAML 的類型轉換器行為,而不是套用至類型的所有值。 在此情況下,您會套用 TypeConverterAttribute 至屬性定義(外部定義,而非特定 get
和 set
定義)。
您可以套用 TypeConverterAttribute 至 get
支援 XAML 使用方法存取子的方法存取子,以指派自定義可附加成員的 XAML 使用類型轉換器行為。
類似於 TypeConverter, TypeConverterAttribute 存在於 XAML 之前存在於 .NET 中,而類型轉換器模型則提供其他用途。 若要參考及使用 TypeConverterAttribute,您必須完整限定它,或提供 的 using
System.ComponentModel語句。 在專案中也包含系統元件。
UidPropertyAttribute
參考檔案: UidPropertyAttribute
適用於: 類別
自變數: 依名稱參考相關屬性的字串。
指出別名為 x:Uid 指示詞之類別的 CLR 屬性。
UsableDuringInitializationAttribute
參考檔案: UsableDuringInitializationAttribute
適用於: 類別
自變數: 布爾值。 如果用於屬性的預期用途,則值應設定為 true
。
指出類型是否在 XAML 物件圖形建立期間由上而下建置。 這是一個進階概念,可能與程序設計模型的定義密切相關。 如需詳細資訊,請參閱UsableDuringInitializationAttribute。
ValueSerializerAttribute
參考檔案: ValueSerializerAttribute
適用於: 類別、屬性、方法(唯一 get
的 XAML 有效方法案例是支援可附加成員的存取子)。
自變數:Type指定串行化程式在串行化屬性型別的所有屬性或特定屬性時要使用的值串行化程式支持類別。
ValueSerializer 指定值串行化類別,其需要比 更多的 TypeConverter 狀態和內容。 ValueSerializer 您可以將 屬性套用 ValueSerializerAttribute 至可附加成員的靜態 get
存取子方法,以與可附加成員建立關聯。 值串行化也適用於列舉、介面和結構,但不適用於委派。
WhitespaceSignificantCollectionAttribute
參考檔案: WhitespaceSignificantCollectionAttribute
適用於: 類別,特別是預期裝載混合內容的集合類型,其中對象元素周圍的空格符對於UI表示而言可能相當重要。
自變數: 無。
WhitespaceSignificantCollectionAttribute 表示集合類型應該由 XAML 處理器處理為空格符,這會影響 XAML 節點數據流在集合中值節點的建構。 如需詳細資訊,請參閱 XAML 中的空格符處理。
XamlDeferLoadAttribute
參考檔案: XamlDeferLoadAttribute
適用於: 類別、屬性。
自變數: 支援兩種屬性形式類型做為字串,或類型為 Type。 請參閱 XamlDeferLoadAttribute。
表示類別或屬性具有 XAML 的延後載入使用方式(例如範本行為),並報告可啟用延遲行為及其目的地/內容類型的類別。
XamlSetMarkupExtensionAttribute
參考檔案: XamlSetMarkupExtensionAttribute
適用於: 類別
自變數: 為回呼命名。
表示類別可以使用標記延伸來提供一或多個屬性的值,並參考 XAML 寫入器應該呼叫的處理程式,再對類別的任何屬性執行標記延伸集作業。
XamlSetTypeConverterAttribute
參考檔案: XamlSetTypeConverterAttribute
適用於: 類別
自變數: 為回呼命名。
表示類別可以使用型別轉換器來提供一或多個屬性的值,並參考 XAML 寫入器應該呼叫的處理程式,再對類別的任何屬性執行型別轉換子集作業。
XmlLangPropertyAttribute
參考檔案: XmlLangPropertyAttribute
適用於: 類別
自變數: 字串,指定要在屬性類型上別名 xml:lang
的屬性名稱。
XmlLangPropertyAttribute 會報告對應至 XML lang
指示詞之屬性型別的屬性。 屬性不一定是型 String 別,但必須可從字串指派(指派可以透過將類型轉換器與屬性的類型或特定屬性產生關聯來完成。 屬性必須是可擦寫的。
對應案例 xml:lang
是讓運行時間物件模型可以存取 XML 指定的語言資訊,而不需使用 XMLDOM 進行特別處理。
定義會繼承至可指派給定義型別的所有衍生型別。 您可以套用 XmlLangPropertyAttribute 至特定衍生型別,以覆寫特定衍生型別上的定義,雖然這種情況並不常見。
元件層級的 XAML 相關 CLR 屬性
下列各節說明未套用至類型或成員定義的 XAML 相關屬性,但會改為套用至元件。 這些屬性與定義在 XAML 中使用的自訂類型連結庫的整體目標有關。 某些屬性不一定直接影響 XAML 節點數據流,而是在節點數據流中傳遞,以供其他取用者使用。 信息的取用者包括需要 XAML 命名空間資訊和相關聯前置詞資訊的設計環境或串行化進程。 XAML 架構內容(包括 .NET XAML 服務預設值)也會使用這項資訊。
XmlnsCompatibleWithAttribute
參考檔案: XmlnsCompatibleWithAttribute
引數:
字串,指定要子實例之 XAML 命名空間的識別碼。
字串,指定 XAML 命名空間的標識碼,該標識碼可以從上一個自變量子化 XAML 命名空間。
XmlnsCompatibleWithAttribute 指定 XAML 命名空間可由另一個 XAML 命名空間進行子系結。 一般會在預先定義的 XmlnsDefinitionAttribute 中指出建立小計的 XAML 命名空間。 這項技術可用於對連結庫中的 XAML 詞彙進行版本控制,並使它與先前針對舊版詞彙定義的標記相容。
XmlnsDefinitionAttribute
參考檔案: XmlnsDefinitionAttribute
引數:
字串,指定要定義之 XAML 命名空間的識別碼。
命名 CLR 命名空間的字串。 CLR 命名空間應該在您的元件中定義公用類型,而且至少應該有一個 CLR 命名空間類型用於 XAML。
XmlnsDefinitionAttribute 會指定 XAML 命名空間與 CLR 命名空間之間的每個元件對應,然後供 XAML 物件寫入器或 XAML 架構內容用來進行型別解析。
XmlnsDefinitionAttribute多個可以套用至元件。 這可能是因為下列任何原因的組合而完成:
連結庫設計包含多個 CLR 命名空間,用於運行時間 API 存取的邏輯組織;不過,您可以參考相同的 XAML 命名空間,讓這些命名空間中的所有類型都能使用 XAML。 在此情況下,您會使用相同XmlNamespace值但不同的ClrNamespace值來套用數XmlnsDefinitionAttribute個屬性。 如果您要定義架構或應用程式想要成為常見用法中預設 XAML 命名空間的 XAML 命名空間對應,這特別有用。
連結庫設計包含多個 CLR 命名空間,而且您想要在這些 CLR 命名空間中類型使用方式之間刻意的 XAML 命名空間區隔。
您可以在元件中定義 CLR 命名空間,並想要透過多個 XAML 命名空間加以存取。 當您使用相同的程式代碼基底支援多個詞彙時,就會發生此案例。
您可以在一或多個 CLR 命名空間中定義 XAML 語言支援。 在這裡情況下, XmlNamespace 此值應該是
http://schemas.microsoft.com/winfx/2006/xaml
。
XmlnsPrefixAttribute
參考檔案: XmlnsPrefixAttribute
引數:
指定 XAML 命名空間識別碼的字串。
指定建議前置詞的字串。
XmlnsDefinitionAttribute 指定用於 XAML 命名空間的建議前置詞。 在 .NET XAML 服務 XamlXmlWriter串行化的 XAML 檔案中撰寫元素和屬性,或 XAML 實作連結庫與具有 XAML 編輯功能的設計環境互動時,前置詞很有用。
XmlnsPrefixAttribute多個可以套用至元件。 這可能是因為下列任何原因的組合而完成:
您的元件會定義多個 XAML 命名空間的類型。 在此情況下,請為每個 XAML 命名空間定義不同的前置詞值。
您支援多個詞彙,而且會針對每個詞彙和 XAML 命名空間使用不同的前置詞。
您可以在元件中定義 XAML 語言支援,並為 定義 XmlnsDefinitionAttribute 。
http://schemas.microsoft.com/winfx/2006/xaml
在這裡情況下,您通常應該升級前置詞x
。
注意
.NET XAML 服務也會定義 XAML 相關屬性 RootNamespaceAttribute。 此屬性是專案系統支援的元件層級屬性,與 XAML 自定義類型無關。