AttributeTable 類別
中繼資料屬性的表格,用於定義設計階段外觀和行為。
繼承階層架構
System.Object
Microsoft.Windows.Design.Metadata.AttributeTable
命名空間: Microsoft.Windows.Design.Metadata
組件: Microsoft.Windows.Design.Extensibility (在 Microsoft.Windows.Design.Extensibility.dll 中)
語法
'宣告
Public NotInheritable Class AttributeTable
public sealed class AttributeTable
public ref class AttributeTable sealed
[<Sealed>]
type AttributeTable = class end
public final class AttributeTable
AttributeTable 型別會公開下列成員。
屬性
名稱 | 說明 | |
---|---|---|
AttributedTypes | 會取得所有型別的列舉,這些型別在像是屬性或是型別本身都具有某種屬性覆寫。 |
回頁首
方法
名稱 | 說明 | |
---|---|---|
ContainsAttributes | 傳回值,這個值表示這份表格是否包含指定之型別的所有中繼資料。 | |
Equals | 判斷指定的 Object 和目前的 Object 是否相等。 (繼承自 Object)。 | |
Finalize | 允許物件在記憶體回收進行回收之前,嘗試釋放資源並執行其他清除作業。 (繼承自 Object)。 | |
GetCustomAttributes(Assembly) | 傳回提供給所指定組件之所有屬性的列舉。 | |
GetCustomAttributes(Type) | 會傳回提供給所指定型別之所有屬性的列舉。 | |
GetCustomAttributes(Type, String) | 會傳回提供給所指定型別和成員名稱之所有屬性 (Attribute) 的列舉。 | |
GetHashCode | 做為特定型別的雜湊函式。 (繼承自 Object)。 | |
GetType | 取得目前執行個體的 Type。 (繼承自 Object)。 | |
MemberwiseClone | 建立目前 Object 的淺層複本 (Shallow Copy)。 (繼承自 Object)。 | |
ToString | 傳回表示目前物件的字串。 (繼承自 Object)。 |
回頁首
備註
您可以使用 AttributeTable 類別,讓設計階段的中繼資料屬性與 Windows Presentation Foundation (WPF) 型別產生關聯。
若要建立屬性表格,請呼叫 AttributeTableBuilder 類別的 CreateTable 方法。 如需詳細資訊,請參閱提供設計階段中繼資料。
屬性表格實質上就是唯讀的字典,但是它的索引鍵和值都是分開來計算。 如果屬性表格包含特定型別的屬性,那麼查詢這個屬性表格會比較有效率。 實際上,屬性集合都是視需求而建立的。
範例
在下列程式碼範例中,會說明如何建立屬性表格並填入內容。 如需詳細資訊,請參閱逐步解說:建立設計階段裝飾項。
Imports System
Imports System.Collections
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Reflection
Imports System.Text
Imports System.Windows.Media
Imports System.Windows.Controls
Imports System.Windows
Imports Microsoft.Windows.Design
Imports Microsoft.Windows.Design.Features
Imports Microsoft.Windows.Design.Metadata
' The ProvideMetadata assembly-level attribute indicates to designers
' that this assembly contains a class that provides an attribute table.
<Assembly: ProvideMetadata(GetType(CustomControlLibrary.VisualStudio.Design.Metadata))>
' Container for any general design-time metadata to initialize.
' Designers look for a type in the design-time assembly that
' implements IProvideAttributeTable. If found, designers instantiate
' this class and access its AttributeTable property automatically.
Friend Class Metadata
Implements IProvideAttributeTable
' Accessed by the designer to register any design-time metadata.
Public ReadOnly Property AttributeTable() As AttributeTable _
Implements IProvideAttributeTable.AttributeTable
Get
Dim builder As New AttributeTableBuilder()
' Apply the ReadOnlyAttribute to the Background property
' of the Button class.
builder.AddCustomAttributes(GetType(Button), "Background", New ReadOnlyAttribute(True))
Dim attributes As AttributeTable = builder.CreateTable()
Dim hasCustomAttributes As Boolean = attributes.ContainsAttributes(GetType(Button))
Dim types As IEnumerable(Of Type) = attributes.AttributedTypes
' The following code shows how to retrieve custom attributes
' using the GetCustomAttributes method overloads.
Dim attrs0 As IEnumerable = attributes.GetCustomAttributes(GetType(Button))
Dim attrs1 As IEnumerable = attributes.GetCustomAttributes(GetType(Button), "Background")
Return attributes
End Get
End Property
End Class
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Reflection;
using System.Text;
using System.Windows.Media;
using System.Windows.Controls;
using System.Windows;
using Microsoft.Windows.Design.Features;
using Microsoft.Windows.Design.Metadata;
// The ProvideMetadata assembly-level attribute indicates to designers
// that this assembly contains a class that provides an attribute table.
[assembly: ProvideMetadata(typeof(CustomControlLibrary.VisualStudio.Design.Metadata))]
namespace CustomControlLibrary.VisualStudio.Design
{
// Container for any general design-time metadata to initialize.
// Designers look for a type in the design-time assembly that
// implements IProvideAttributeTable. If found, designers instantiate
// this class and access its AttributeTable property automatically.
internal class Metadata : IProvideAttributeTable
{
// Accessed by the designer to register any design-time metadata.
public AttributeTable AttributeTable
{
get
{
AttributeTableBuilder builder = new AttributeTableBuilder();
// Apply the ReadOnlyAttribute to the Background property
// of the Button class.
builder.AddCustomAttributes(
typeof(Button),
"Background",
new ReadOnlyAttribute(true));
AttributeTable attributes = builder.CreateTable();
bool hasCustomAttributes = attributes.ContainsAttributes(typeof(Button));
IEnumerable<Type> types = attributes.AttributedTypes;
// The following code shows how to retrieve custom attributes
// using the GetCustomAttributes method overloads.
IEnumerable attrs0 = attributes.GetCustomAttributes(typeof(Button));
IEnumerable attrs1 = attributes.GetCustomAttributes(
typeof(Button),
"Background");
return attributes;
}
}
}
}
執行緒安全
這個型別的任何 Public static (在 Visual Basic 中為 Shared) 成員都具備執行緒安全。並非所有的執行個體成員都是安全執行緒。
請參閱
參考
Microsoft.Windows.Design.Metadata 命名空間