Ich denke, ich möchte hier einen Vortrag über die korrekte Anwendung von WPF halten, aber ich werde meine Chancen nutzen, da ich am Ende meiner Weisheit bin. Ich denke, das ist wahrscheinlich hauptsächlich eine Folge meiner Lethargie, WPF-Vorlagen und -Stile vollständig zu umarmen, so dass ich gerne solche Vorträge höre.
Ich schreibe eine Art Audio-Editor / Event-Orchestrator. Ich habe einen Streckeneditor, mit dem ich ziemlich zufrieden bin. Allerdings habe ich es größtenteils aus benutzerdefinierten Steuerelementen aufgebaut (ich weiß, das ist wahrscheinlich eine WPF-Sünde). Passend zu diesem Thema möchte ich einen Standard-Header für die Tracks erstellen, aber ich möchte, dass die einzelnen Track- "Typen" definieren können, was in diesen Header gehört. Ich dachte, ein Steuerelement, das eine Art "Griff" am Rand definiert und dann dem Implementierer erlaubt, die Substanz "auszufüllen", würde gut funktionieren. Ich habe jedoch keine Ahnung, wie man das in WPF macht, ohne Styles zu verwenden und selbst wenn ich Stile verwende, würde ich das gerne verstehen.
Dies liegt wahrscheinlich daran, dass ich eine Art Beispielimplementierung eines einfachen ContentControl-Steuerelements (z. B. einer Schaltfläche) haben möchte und keine finden kann (außer AvalonDock, das letztendlich - ich bin mir sicher - dafür Vorlagen verwendet). . In meinem Kopf sieht das Xaml ungefähr so aus:
%Vor%
Aber natürlich funktioniert das nicht. Ich bin mir ziemlich sicher, dass ich das Gleiche tun könnte, indem ich hinter den Kulissen Tricks mit Überladungen spiele, aber es wäre schön, wenn ich so etwas tun könnte. Muss ich wirklich all meine schrecklichen, prozeduralen Wege hinter mir lassen und diese Stile benutzen, von denen du sprichst? Wenn ja, kann mir jemand wenigstens sagen, wie dieser Button im Framework aussieht?
Hier ist ein vollständiges Beispiel, wie Sie von ContentControl ableiten, um das zu erreichen, was Sie wollen: Erstellen benutzerdefinierter Benutzersteuerelemente (abgeleitet von ContentControl) in WPF 4
Pete's ContentPresenter macht dasselbe wie in Ihrem Beispiel.
Mithilfe von Stilen können Sie die Funktionalität eines Steuerelements mit der Darstellung eines Steuerelements trennen. B. der Button .
Denken Sie als Kontrolle am Anfang als nichts mehr als Funktionalität. Eine einfache Klasse, die vordefinierte Ereignisse, Eigenschaften usw. enthält. Sobald diese Steuerung die Aufgabe übernimmt, Teil eines visuellen Baums zu werden, benötigt sie nun eine visuelle Identität. Es brauchte vorher nicht; aber jetzt tut es es. Durch das Definieren eines Standardstils erhält dieses Steuerelement nun eine visuelle Darstellung, die es nicht vorher benötigt, da es nicht innerhalb des visuellen Baums lebt.
Das Ignorieren von Stilen wäre wie das Ignorieren von CSS bei der Verwendung von HTML.
Tags und Links wpf .net c# wpf-controls