問題タブ [templatebinding]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
wpf - テンプレートバインディングを介してパスプロパティを変更する
パスを含むコントロールテンプレートがあります(他のコントロール以外)。コントロールのサイズを変更するときに、パスのサイズを変更する必要があります。パスを表すポイントとサイズは、コントロールサイズの相対的な割合として表すことができます。
テンプレートの抜粋は次のとおりです。
StartとEndはPoint型のDependencyPropertiesであり、SizeはSize型のDependencyPropertyです。
私が現在行っているのは、FrameworkElement.SizeChangedイベントをリッスンしています。
問題は次のとおりです。パスのプロパティを親コントロールのサイズにバインドする別の(よりエレガントな)方法はありますか?
wpf - TemplateBindingが特定の場合に機能しない(TranslateTransformを使用する場合)
これが、この問題をWPFで再現した方法です。
カスタムコントロールを作成します。
Generic.xamlファイルにスタイルを追加します。
次に、それをメインウィンドウに追加します。
次に、アプリケーションを実行すると、「テキスト」は正常に機能しますが、「オフセット」は機能しません。また、Windows Phone 7開発環境でも同様のことを試しましたが、同じ結果が得られました。
オフセットを機能させるには、コードをどのように変更する必要がありますか?
ありがとう
wpf - TemplateBinding の制限事項
カスタム コントロール (VS 2008 で記述) には SelectedColor 依存関係プロパティがあり、そのコントロール テンプレートには次のものが含まれます。
バインディングが次のように置き換えられない限り、長方形は正しい色になりません。
OK、TemplateBinding は Binding の簡略化されたバージョンであり、一連の制限があることは承知しています。では、上記のコードが機能しない原因となる正確な制限は何ですか?
silverlight - ContentControl で無視される RowDefinition.Height への TemplateBinding
説明:
カスタム コンテンツ コントロールがあり、依存関係プロパティを介していくつかの外部設定を有効にしようとしています。基本的に、これは 2 つのグリッド行を持つデコレータ パネルです。上の行はヘッダー、下の行はコンテンツです (経由ContentPresenter
)。
(TemplateBinding を介して) テンプレートにバインドされている 3 つの項目がありますHeaderHeight
(TextSize
それぞれHeader
に適切な型の依存関係プロパティがあります)。
問題:
2 つのバインディングは (設計時でも) 完全に機能しますが、3 つ目のバインディングは機能しません。FontSize="{TemplateBinding TextSize}"
とText="{TemplateBinding Header}"
バインディングは機能しますが、は<RowDefinition Height="{TemplateBinding HeaderHeight}" />
機能しません。
HeaderHeight プロパティをどの値に設定しても、グリッドは行の高さを 50/50 に分割します。DP メタデータからデフォルト値を取得することさえありません。
質問: このシナリオの問題点は何ですか? 他の 2 つのバインディングは問題なく動作するのに、これはバインディングがまったくないかのように動作するのはなぜですか?
注:コンストラクター
を設定DataContext = this
して に置き換える{TemplateBinding HeaderHeight}
と{Binding HeaderHeight}
、問題はなくなり、意図したとおりに動作します。しかし、他のバインディングを機能させるために同じことをする必要がない理由を知りたいです。
XAML (テーマ/Generic.xaml):
コンテンツ コントロール (C#):
カスタム コントロールの使用法 (XAML):
wpf - generic.xamlのTemplateBindingとプロパティの再描画が変更されました
カスタムコントロールがあります。カスタムコントロールには、いくつかの要素があります。これらの要素の1つには、特別な高さの値が必要です。
私が話しているこの高さは、次のコードのCanvasThicknessです。
generic.xamlでは、CanvasのHeight-Propertyに使用されるCanvasThicknessは次のとおりです。
これで、このスライダーの高さは3になります。たとえば、次のようにCustomControlを使用するとします。
Sliderの高さは12だと思いますが、それでも3です。CanvasThicknessの値は12です。
PropertyChangedでCustomControlを再描画するにはどうすればよいですか?FrameworkPropertyMetadataOptionsを試しましたが、CustomControlには影響しません。
前もって感謝します。
編集:可能であれば、ソリューションはSilverlightでも実行する必要があります。
wpf - ControlTemplate のスタイル DataTrigger からの TemplateBinding
次の XAML では、ToggleButton のテンプレートとして、Border を持つ Rectangle を使用しています。ToggleButton.IsChecked の変化する値を反映するために、BorderBrush を別の色にしたいと考えています。残念ながら、ここで DataTrigger で TemplateBinding を使用しようとしてもうまくいきません。代わりに何をする必要がありますか?
編集
デザイナーをビルドしてリロードすると、次のエラーが発生します。
エラー 1 プロパティ 'Binding' はタイプ 'TemplateBindingExpression' の値をサポートしていません。
解決
silverlight - テンプレートバインディングで境界線の背景を設定する
Value = "{TemplateBinding HeaderColor}"独自のコントロールを作成しましたが、Border.Backgroundをテンプレートプロパティにバインドできるかどうか疑問に思っています。現在、次のようなStaticResourceを使用して設定しています。
コントロールのプロパティにし、テンプレートバインディングとして設定できるようにしたいと思います
MainPage.xaml
私のクラス:
この2番目のオプションは機能しませんが、これを実行できる必要がありますか?エラーは発生しません。設定した色に変更されません。
AngelWPFが残したコメントは、以下に貼り付けて、より多くのコードを要求しました。私はコントロールの作成を学習する初期段階にあります。まだ行っていないことがたくさんあるので、一度に1つずつ:)
generic.xaml
Selection.cs
wpf - コントロール テンプレートの WPF ネストされたバインディング
モデル / vm. 例の電子メールのコードは次のようになります。
私はこれらをたくさん持っているので、これらすべてをコントロール テンプレートに入れ、これを共通のリソース ファイルに再配置したかったのです。
私のテンプレートは次のようになります。
そして、私は次のようにリンクします:
残念ながら、検証を実行しないため、バインディングを何らかの形で破る必要があります...
お知らせ下さい...
ありがとう。
wpf - 添付プロパティの WPF TemplateBinding
この種の TemplateBinding の使用を理解したいと思います:
これは、エキスパンダーのルックアンドフィールを再定義する ControlTemplate の定義内の行で使用されます。(ControlTemplate TargetType=Expander)
エキスパンダー クラスにはPanelプロパティがないため、コントロール テンプレートが適用されるときに Panel.Background がどこから来るのかを理解したいと思います。添付プロパティを考えましたが、XAML では次のようなものを書くことができません。
したがって、エキスパンダー クラスには Panel.Background 添付プロパティがないようです。
wpf - 特定の ObservableCollection アイテムのプロパティを CustomControl の ControlTemplate にバインドする方法
複数の状態ボタンのような「状態」の監視可能なコレクションを持つカスタム コントロールがあります。混乱を避けるために、必要なコードのみをここに示します。
「MyState」クラス (コレクション内のオブジェクト) には、カスタム コントロールの各位置の上に表示する公開の「Name」プロパティが含まれています。
今。ウィンドウの XAML で、MyMultiStateBtn の 2 つのインスタンスを作成しました。そのうちの 1 つは次のようになります (2 番目のインスタンスは明らかに「状態」のリストが異なります)。
ここまでは順調ですね。これらのコントロールがテンプレート ("MultiStateBtnTpl") を使用していることに注意してください。このテンプレートは、TextBoxes を使用して州名を表示しています...そして、ここで構文に迷いました。何百万回も失敗した試みは割愛します...これが私が考えていたことの大まかなことです(注:このバインディングが機能しないことはわかっています!):
一言で言えば、監視可能なコレクションのアイテム内に埋め込まれた文字列をテンプレートに検出させるにはどうすればよいですか...
情報がそこにあることは知っていますが、配列 (コレクション) の個々の要素内のデータにアクセスするのに役立つものは何も見つかりませんでした。
助けてくれてありがとう!
セブ
PS: 3 つの個別のプロパティを作成し、controltemplate でそれらにアクセスできました。ただし、場合によっては、最大 10 または 20 のポジションが存在することもあります。20個の個別のプロパティを持つことは避けたいです。