In WinForms konnte ich einer benutzerdefinierten Steuerelementeigenschaft ein Attribut [Category] hinzufügen, um anzugeben, welche Eigenschaftskategorie die Eigenschaft enthalten sollte. Wie mache ich das in WPF? DankeFestlegen der Eigenschaftentyp für das benutzerdefinierte WPF-Steuerelement?
Antwort
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); }
}
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.