答えて
TemplateBindingは全く同じものではありません。 MSDNのドキュメントは、ソフトウェア機能について単音節のSDEをクイズする必要がある人々によって書かれていることが多いため、ニュアンスは正しくありません。
テンプレートバインディングは、コンパイル時にコントロールテンプレートで指定された型に対して評価されます。これにより、コンパイルされたテンプレートをより迅速にインスタンス化できます。テンプレートバインディングでその名前をあいまいにして、コンパイラがそれにフラグを立てることがわかります。
バインディングマークアップは実行時に解決されます。実行が遅くなると、バインディングはテンプレートによって宣言された型では見えないプロパティ名を解決します。遅くなるにつれて、私はバインディング操作がアプリケーションのCPUのほんのわずかしかかからないので、その種の相対的なものを指摘します。コントロールテンプレートを高速で吹き飛ばしていた場合は、気づくかもしれません。
Bindingを恐れることはできませんが、実際にはTemplateBindingを使用してください。
したがって、メインは覚えていると思います。コンパイル時間とランタイム。ランタイム中に変更しようとすると、TemplateBindingは機能しません。右 ? –
また、TemplateBindingではなくBindingを使用すると、デザイン時に表示される内容に影響を与えることにも注意してください。特定の構成では、{Binding RelativeSource ...}を使用してバインドされたプロパティはデザイナに表示されません(ただし、実行時には表示されます)。{TemplateBinding ...}を使用すると、設計時に – lfalin
これらは同様の方法で使用されますが、いくつかの違いがあります。ここ は、TemplateBindingのドキュメントへのリンクです: http://msdn.microsoft.com/en-us/library/ms742882.aspx
TemplateBindingのはTemplatedParentとの結合のための省略形ですが、それはあなたがTemplateBindingのからBinding.Modeを制御することはできません例えば、Bindingクラスのすべての機能を公開しません。
私はTemplateBindingがFreezableタイプ(ブラシオブジェクトを含む)をサポートしていないと考えました。問題を回避する。 TemplatedParentを使用することができます
もう1つ - TemplateBindingsは値の変換を許可していません。彼らはあなたがコンバータを渡すことを許可せず、たとえばintを文字列に自動的に変換しません(これはバインディングでは普通です)。
ありがとうMiroslav、これは私が遭遇していた問題で、TemplatedParentを使用して問題を解決しました。 – MikeKulls
- より効率的な結合よりも制限よりFreezables
- ControlTemplateのトリガー内では機能しません
- settinでショートカットを提供しますgプロパティ(冗長ではない)、例えば、{TemplateBindingのtargetProperty}
正規Binding - TemplateBindingのを制限
- 尊重する親プロパティ
- リセット目標値いかなる明示的に設定された値
- 例をクリアするために、上記の必要はありません。<楕円形の塗りつぶし= "{バインディングRelativeSource = {RelativeSource TemplatedParent}、パス=背景}"/>
RelativeSource TemplatedParent
このモードでのControlTemplateが適用される制御の性質に与えられたのControlTemplateプロパティを結ぶ可能。ここにも問題を理解するために、私はそのコントロールテンプレートに与えられたコントロールのプロパティを適用したい場合は、私はTemplatedParentモードを使用することができます
<Window.Resources>
<ControlTemplate x:Key="template">
<Canvas>
<Canvas.RenderTransform>
<RotateTransform Angle="20"/>
</Canvas.RenderTransform>
<Ellipse Height="100" Width="150"
Fill="{Binding
RelativeSource={RelativeSource TemplatedParent},
Path=Background}">
</Ellipse>
<ContentPresenter Margin="35"
Content="{Binding RelativeSource={RelativeSource
TemplatedParent},Path=Content}"/>
</Canvas>
</ControlTemplate>
</Window.Resources>
<Canvas Name="Parent0">
<Button Margin="50"
Template="{StaticResource template}" Height="0"
Canvas.Left="0" Canvas.Top="0" Width="0">
<TextBlock FontSize="22">Click me</TextBlock>
</Button>
</Canvas>
怒鳴る例です。このマークアップ拡張にも同様のものがあります。これは、最初の短い手の一種であるTemplateBindingですが、TemplateBindingは、最初の実行時間の直後に評価されるTemplatedParentのコントラストでコンパイル時に評価されます。以下の図から分かるように、背景とコンテンツはボタン内からコントロールテンプレートに適用されます。
- 1. WPF - TemplateBindingのは、メンバーのコンテンツ
- 2. Silverlight/WPFのTemplateBindingとContentPresenter
- 3. WPF TemplateBinding値の文字列を連結する
- 4. SilverlightのTemplateBinding DataContext
- 5. WPFでTemplateBindingとTemplatedParentを使用する場合
- 6. WPFスタイル設定ツールでTemplateBindingを使用できますか?
- 7. ObjectAnimationUsingKeyFramesでのTemplateBindingの使用
- 8. ソースがデザインビューWPFのTemplateBindingであるテンプレートにイメージを表示する方法は?
- 9. WPFでTemplateBindingでタグとして文字列を使用するには?
- 10. WPFエラーを解決するためにTemplateBindingを設定する方法 "テンプレートにない場合はTemplateBindingを設定できません。"
- 11. TemplateBindingのは、特定のケースでは動作しません
- 12. TemplateBinding "Foreground"が機能しません
- 13. ControlTemplate.TriggersでTemplateBindingを使用する
- 14. WPF - トリガー
- 15. カスタムコントロールのDependencyPropertyへのTemplateBindingが機能しない
- 16. カスタマイズされたコントロールのTemplateBindingへの方法
- 17. WPF GroupBoxヘッダーのカスタマイズ
- 18. WPF ListView ControlTemplateのカスタマイズ
- 19. WPF Datagrid行フォアグラウンドカラーマルチトリガー
- 20. ストーリーボードTargetName WPF
- 21. WPFの例外
- 22. ButtonBindingのDrawingImage内でTemplateBindingが機能しない
- 23. WPF DataGrid Dockパネルグループ
- 24. wpf trigger setter issue
- 25. wpf combobox style
- 26. WPF - リストビュー選択スタイル
- 27. WPFツールキット:バグコントロールテンプレート?
- 28. WPF PasswordBox角丸
- 29. WPF ToggleButton背景の問題
- 30. .NET FrameworkオブジェクトでTemplateBindingが動作しない
2ウェイバインディングが必要な場合は、2番目のオプションを使用する必要があります –