:
「FooDesignTimeDataは」(自分のランタイムビューモデルからインタフェースを適切な形で設計時のデータを提供するクラス実装され
<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>
は良い習慣ですここに)。
これは第三者のコントロールでもうまくいかない理由はわかりません。コントロールを再表現する必要さえないかもしれません - あなたのスタイルの中にサードパーティのコントロールを指定して、上記のようにデザイン時のデータコンテキストを与えるだけでなくなるかもしれませんが、私はそのシナリオを試していません。私はVendor.Controls.Design.dllやVendor.Controls.Expression.Designを提供するなど、素晴らしい設計時間の経験がないコントロールを使用しなければならないため、このようなトラブルに陥っていると思います。 dllファイル)。
TemplateBindingsを使用するには、すばらしい解決策はありません。私は通常私のコントロールを表示し、私は周りのテンプレートを切り替えることができますテストページを作成します。統合中には、必要に応じてコントロールのインスタンスを作成したり操作したりできる追加のビュー(アプリ内または別のアプリケーションとして)があります。 Blend SDKのGoToStateActionターゲットトリガーアクションは、ここではしばしば役に立ちます。たとえば、ビジュアルステートごとにボタンを作成し、「クリック」を使用して特定のステートへの遷移をトリガーします。したがって、テストデータにバインドされている間に、すべての状態と遷移を簡単にテストできます。ハッキーと実際に時間のデータを設計するのではなく、それは動作します。
'{Binding}'は 'd:DataContext'のために簡単ですが、' {TemplateBinding} 'の後ろです。 –
上記の作業を試しましたが、スタイルの一部としてd:DataContextを割り当てましたか?私はこの状況のための素晴らしい解決策はありません:通常私は自分のコントロールを表示し、テンプレートを切り替えることができますテストページを作成します。ハッキーだが、うまくいく。 –
これは妥当と思われます。これを自分で試してみてください。しかし、統合バージョンのXAMLを変更する必要がありますか、バインディングを提供することはできますか? –