[解決済み] テンプレートバインディングとバインディングとは?
2022-08-07 05:05:15
質問
理解できなかったこと
BorderThickness="{TemplateBinding BorderThickness}
.
以下はそのコードです。
<ControlTemplate TargetType="{x:Type wpftoolkit:DataGridCell}">
<Border Padding="{TemplateBinding Padding}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Background="{TemplateBinding Background}"
SnapsToDevicePixels="True">
<ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</Border>
</ControlTemplate>
また、他のバインディングの種類についても説明してください。
どのように解決するのですか?
TemplateBindingは、テンプレート定義内の要素のプロパティにバインドするために使用されます。 あなたの例では、次のように記述することができました。
<Border Padding="{Binding Padding}" ...>
...つまり、ボーダーのpaddingプロパティと...のpaddingプロパティを結合する。 は何ですか? あなたは、"このテンプレートが使用されているコントロールのpaddingプロパティ、と言いたいのでしょう。現時点ではコントロールのx:Nameが分からないので、名前を付けることはできません(たとえ分かったとしても、それは異なるネームスコープにあるのでうまくいきません)。しかし、相対的なソースを定義することによって、これを行うことができます。
<Border Padding="{Binding Padding, RelativeSource={RelativeSource TemplatedParent}" ...>
または、上記のショートカット(*)であるTemplateBindingを使用します。
<Border Padding="{TemplateBinding Padding}" ...>
(*) これらのテンプレート化シナリオでより冗長でないことに加えて、TemplateBindingは通常のバインディングと比較していくつかの相違点があります。
- それはコンパイル時に評価されます。(たとえば、Padding プロパティが存在しない場合、コンパイル エラーが発生します。しかし、TemplatedParentを使用したバインディングを使用していた場合、実行時にしかエラーは表示されません)。
- 常に一方向のバインディングです。
- これは、ソースとターゲットの両方のプロパティが 依存性プロパティ .
- これは、はるかに少ない機能を持っています (StringFormat, Delay, IsAsync などはありません。 バインディング vs テンプレートバインディングエクステンション ).
関連
-
例外の解決方法 GDI+でジェネリックエラーが発生しました。
-
[解決済み] 静的プロパティへのバインディング
-
[解決済み] WPFのテキストラップとWrapWithOverflowの比較
-
[解決済み] wpf: ボタンがコマンドによって無効にされたとき、ツールチップを表示する方法は?
-
[解決済み] オーバーレイコントロールを他のすべてのコントロールの上に配置するには?
-
[解決済み] スタックパネルでアイテムを整列させる?
-
[解決済み] WPF:幅(と高さ)をパーセント値で設定する
-
[解決済み] WPF Numeric UpDownコントロールはどこにありますか?
-
[解決済み] 読み取り専用のGUIプロパティをViewModelにプッシュバックする
-
[解決済み] WPF ListViewの選択範囲オフ
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
WPFバインディング(データバインディング)の使用方法
-
[解決済み] Windows 8 ランタイム(WinRT / Windowsストアアプリ / Windows 10 ユニバーサルアプリ)とSilverlightやWPFの比較はどうですか?[クローズド]
-
[解決済み] バインディングConverterParameter
-
[解決済み] WPF TemplateBindingとRelativeSource TemplatedParentの比較
-
[解決済み] Prism for WPFとは?
-
[解決済み] グリッドカラムの幅・高さを設定する際の「Auto」と「*」の違いは何ですか?
-
[解決済み] WPFのキーボードショートカット
-
[解決済み] ItemsControlの仮想化?
-
[解決済み] 読み取り専用のGUIプロパティをViewModelにプッシュバックする
-
[解決済み] WPFのスライダーを整数の位置にのみスナップさせる方法とは?