私自身のコントロールのために、私は通常次のようなことをします:
<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>
ここで、「FooDesignTimeData」は、適切な形式で設計時データを提供するクラスです(ここでは、ランタイムビューモデルからインターフェイスを実装することをお勧めします)。
なぜこれがサードパーティのコントロールでも機能しないのかわかりません。コントロールを再テンプレート化する必要さえないかもしれません-スタイル内でサードパーティのコントロールを指定し、上記のようにデザイン時のデータコンテキストを与えるだけで回避できるかもしれませんが、私はそのシナリオを試していません。(Vendor.Controls.Design.dllやVendor.Controls.Expression.Designを提供するなどして)優れた設計時の経験がないコントロールを使用せざるを得ないため、このすべての問題が発生すると思います。 dllファイル)。
TemplateBindingsを操作するための優れたソリューションはありません。通常、コントロールを表示し、テンプレートを切り替えることができるテストページを作成します。統合中に、必要に応じてコントロールのインスタンスを作成および操作できる追加のビュー(アプリ内または別のアプリとして)が表示されます。ここでは、BlendSDKのGoToStateActionターゲットトリガーアクションが役立つことがよくあります。たとえば、視覚的な状態ごとにボタンを作成し、クリックイーブンを使用して特定の状態への遷移をトリガーします。したがって、テストデータにバインドされている間、すべての状態と遷移を簡単にテストできます。ハッキーで実際には設計時間データではありませんが、機能します。