AttributeTableBuilder-Klasse
Aktualisiert: November 2007
Erstellt eine Attributtabelle, die an den Metadatenspeicher übergeben werden kann.
Namespace: Microsoft.Windows.Design.Metadata
Assembly: Microsoft.Windows.Design (in Microsoft.Windows.Design.dll)
Syntax
Public Class AttributeTableBuilder
Dim instance As AttributeTableBuilder
public class AttributeTableBuilder
public ref class AttributeTableBuilder
public class AttributeTableBuilder
Hinweise
Zur Erstellung einer Attributtabelle erstellen Sie zunächst eine Instanz der AttributeTableBuilder-Klasse. Fügen Sie dem Attributtabellen-Generator Metadaten hinzu, indem Sie die AddCustomAttributes-Überladungen aufrufen. Nachdem Sie die Metadaten hinzugefügt haben, erstellen Sie aus dem Attributtabellen-Generator eine Attributtabelle, indem Sie die CreateTable-Methode aufrufen. Die Methoden des Attributtabellen-Generators unterstützen Rückrufdelegaten. Somit kann die Erstellung der Attributtabelle bis zum gewünschten Zeitpunkt hinausgezögert werden.
Verwenden Sie die AttributeCallbackBuilder-Klasse anstelle der AttributeTableBuilder-Klasse, wenn Sie viele Attribute hinzufügen. Bei diesem Ansatz wird die Erstellung von Attributen verzögert, bis vom Designer Metadaten für den Zieltyp angefordert werden.
Beispiele
Im folgenden Codebeispiel ist dargestellt, wie eine Attributtabelle mithilfe der AttributeTableBuilder-Klasse erstellt und aufgefüllt wird. Weitere Informationen finden Sie unter Exemplarische Vorgehensweise: Erstellen eines Entwurfszeitadorners.
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.Features
Imports Microsoft.Windows.Design.Metadata
' Container for any general design-time metadata to initialize.
' Designers look for a type in the design-time assembly that
' implements IRegisterMetadata. If found, designers instantiate
' this class and call its Register() method automatically.
Friend Class Metadata
Implements IRegisterMetadata
' Called by the designer to register any design-time metadata.
Public Sub Register() Implements IRegisterMetadata.Register
Dim builder As New AttributeTableBuilder()
builder.AddCustomAttributes( _
GetType(Button), _
New DefaultPropertyAttribute("Content"))
' Apply the ReadOnlyAttribute to the Background property
' of the Button class.
builder.AddCustomAttributes( _
GetType(Button), _
"Background", _
New ReadOnlyAttribute(True))
Dim properties As PropertyDescriptorCollection = _
TypeDescriptor.GetProperties(GetType(Button))
Dim pd As PropertyDescriptor = properties("Foreground")
builder.AddCustomAttributes( _
GetType(Button), _
pd, _
New ReadOnlyAttribute(True))
builder.AddCustomAttributes( _
GetType(Button), _
Button.WidthProperty, _
New ReadOnlyAttribute(True))
Dim members As MemberInfo() = GetType(Button).GetMember("Height")
builder.AddCustomAttributes( _
GetType(Button), _
members(0), _
New ReadOnlyAttribute(True))
Dim attributes As AttributeTable = builder.CreateTable()
MetadataStore.AddAttributeTable(attributes)
End Sub
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;
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 IRegisterMetadata. If found, designers instantiate
// this class and call its Register() method automatically.
internal class Metadata : IRegisterMetadata
{
// Called by the designer to register any design-time metadata.
public void Register()
{
AttributeTableBuilder builder = new AttributeTableBuilder();
builder.AddCustomAttributes(
typeof(Button),
new DefaultPropertyAttribute("Content"));
// Apply the ReadOnlyAttribute to the Background property
// of the Button class.
builder.AddCustomAttributes(
typeof(Button),
"Background",
new ReadOnlyAttribute(true));
PropertyDescriptorCollection properties =
TypeDescriptor.GetProperties(typeof(Button));
PropertyDescriptor pd = properties["Foreground"];
builder.AddCustomAttributes(
typeof(Button),
pd,
new ReadOnlyAttribute(true));
builder.AddCustomAttributes(
typeof(Button),
Button.WidthProperty,
new ReadOnlyAttribute(true));
MemberInfo[] members = typeof(Button).GetMember("Height");
builder.AddCustomAttributes(
typeof(Button),
members[0],
new ReadOnlyAttribute(true));
AttributeTable attributes = builder.CreateTable();
MetadataStore.AddAttributeTable(attributes);
}
}
}
Vererbungshierarchie
System.Object
Microsoft.Windows.Design.Metadata.AttributeTableBuilder
Threadsicherheit
Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.
Siehe auch
Referenz
Microsoft.Windows.Design.Metadata-Namespace