Für meine eigenen Kontrollen mache ich normalerweise so etwas wie:
<Style x:Key="FooStyle>
<Setter Property="Template>
<Setter.Value>
<ControlTemplate TargetType="FooControl">
<Grid d:DataContext="{d:DesignInstance FooDesignTimeData, IsDesignTimeCreatable=True}">
... guts of control template go here ...
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Dabei ist "FooDesignTimeData" eine Klasse, die Entwurfszeitdaten in geeigneter Form bereitstellt (die Implementierung der Schnittstelle von Ihrem Laufzeit-View-Modell ist hier eine gute Praxis).
Ich wüsste nicht, warum dies nicht auch für eine Steuerung von Drittanbietern funktionieren sollte. Möglicherweise müssen Sie nicht einmal das Steuerelement retemplate - Sie könnten in der Lage sein, weg, indem Sie nur die 3rd-Party-Steuerelement innerhalb Ihres Stils und geben es eine Designzeit Datenkontext wie oben angegeben, aber ich habe nicht versucht, dass Szenario. Ich gehe davon aus, dass Sie sich all diese Mühe machen, weil Sie gezwungen sind, ein Steuerelement zu verwenden, das nicht über eine große Designzeit Erfahrung (z. B. durch die Bereitstellung einer Vendor.Controls.Design.dll oder Vendor.Controls.Expression.Design.dll-Datei).
Um mit den TemplateBindings zu arbeiten, habe ich keine gute Lösung. Normalerweise erstelle ich eine Testseite, die mein Steuerelement anzeigt und mir erlaubt, die Vorlagen zu wechseln. Während der Integration haben Sie eine zusätzliche Ansicht (entweder innerhalb Ihrer App oder als separate App), die es Ihnen ermöglicht, Instanzen des Steuerelements nach Bedarf zu erstellen und zu manipulieren. Die GoToStateAction Targeted Trigger Action aus dem Blend SDK ist hier oft nützlich. Erstellen Sie zum Beispiel eine Schaltfläche für jeden visuellen Zustand und verwenden Sie dann die Click-Aktion, um einen Übergang zu einem bestimmten Zustand auszulösen. Auf diese Weise können Sie ganz einfach alle Ihre Zustände und Übergänge testen, während Sie an Testdaten gebunden sind. Hacky und nicht wirklich Designzeit Daten, aber es funktioniert.