Wie qntmfred gesagt hat, können Sie dies nicht direkt tun. Wenn Sie jedoch das Steuerelement besitzen, das Sie anpassen möchten (das klingt wie Sie), können Sie dies tun, indem Sie geeignete Anpassungseigenschaften hinzufügen, z. B. eine CustomButtons-Eigenschaft (zu der jeder Benutzer des Steuerelements eigene Schaltflächen hinzufügen kann)) oder eine ExtensionContent-Eigenschaft (die jeder Benutzer des Steuerelements auf den von ihm gewünschten Inhalt setzen kann - lassen Sie es leer, fügen Sie ein einzelnes Steuerelement hinzu oder fügen Sie ein Panel mit beliebig vielen Elementen hinzu). Ihr ControlTemplate würde diesen Eigenschaften keine Semantik zuweisen, sondern sie nur so hosten, wie sie ihm zugewiesen wurden. Angenommen, Sie haben eine ExtensionContent-Eigenschaft angegeben. Ihre Control könnte präsentieren diese mit einem Content:
<ContentPresenter ContentSource="ExtensionContent" />
Und Ihre Nutzer könnten setzen, was sie in ihm wollte:
<s:StefansControl>
<s:StefansControl.ExtensionContent>
<StackPanel Orientation="Horizontal">
<TextBlock Text="I'm custom content" />
<Button Click="DoSomethingSurprising_Click">Click me</Button>
<Image Source="something.jpg" />
</StackPanel>
</s:StefansControl.ExtensionContent>
</s:StefansControl>
Ein weiterer möglicherweise ist Stileigenschaften zur Verfügung zu stellen, die Sie Teile Ihrer Kontrolle auszuüben, so Diese Benutzer können sie stylen (einschließlich der Änderung der Vorlage , die Teil (nur) des Steuerelements), ohne den gesamten Stil/Vorlage zu ersetzen. Dies ist eine Art Ihrer "Schnittstelle zu einem spezifischen Element" Idee, z. Stellen Sie eine FooBoxStyle-Eigenschaft bereit, die auf die TextBox "foo" angewendet wird.
Kurz gesagt, die Idee besteht darin, ein gewisses Maß an "teilweiser Ersetzbarkeit" in die Basisvorlage zu integrieren - sei es durch Verwendung von Inhalten, Stilen, Vorlagen oder einer Kombination von diesen. WPF gibt keine allgemeine Vorstellung von "teilweisem Ersatz", aber Sie können Ihre eigene Vorstellung von teilweiser Ersetzbarkeit angeben, vorausgesetzt, Sie können vorhersagen, welche Art von teilweisem Ersatz erforderlich sein könnte.
Warum nicht nur, oh, ich weiß nicht ... fügen Sie die Schaltfläche zu der Vorlage? – Will
Da die Lösung dieses Steuerelement verwendet und jedes Projekt entscheidet, welche Schaltflächen hinzugefügt werden sollen –