2010-01-01 6 views

Antwort

15

Ich habe festgestellt, dass Sie nicht haben, um eine Entwurfszeit-DLL einzufügen, um einer benutzerdefinierten Steuerelementeigenschaft ein [Category] -Attribut hinzuzufügen. Das ist eine Möglichkeit, wie es gemacht werden kann, aber tatsächlich können Sie jedes .NET-Attribut verwenden, genau wie in WinForms. Zum Beispiel:

/// <summary> 
/// The image displayed by the button. 
/// </summary> 
/// <remarks>The image is specified in XAML as an absolute or relative path.</remarks> 
[Description("The image displayed by the button."), Category("Common Properties")] 
public ImageSource Image 
{ 
    get { return (ImageSource)GetValue(ImageProperty); } 
    set { SetValue(ImageProperty, value); } 
} 
3

Sie müssen eine "Metadaten-Assembly" bereitstellen, die auch als "Entwurfszeit-DLL" bezeichnet wird. Dies ist eine Assembly mit demselben Namen wie Ihre Hauptbaugruppe, an die .Design angehängt ist (z. B. MyCompany.MyControls.Design.dll) und die eine Klasse enthält, die IRegisterMetadata implementiert. Die IRegisterMetadata-Implementierung erstellt eine Attributtabelle für die verschiedenen Komponenten in Ihrer Hauptbaugruppe und fügt diese einem MetadataStore hinzu.

Für vollständige Informationen und Beispiele, siehe Blog-Beiträge von Jim Nakashima des Cider-Teams here und here.

Dokumentation siehe WPF Designer Extensibility in MSDN.

Verwandte Themen