問題タブ [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.

0 投票する
1 に答える
1974 参照

c# - ComboBox を拡張するカスタム コントロールの SelectedItem で TemplateBinding が機能しない

ComboBox の選択をクリアするボタンを持つカスタム ComboBox コントロールを作成しました。

ItemsSource のバインディングは正常に機能しますが、SelectedItem のバインディングは機能しません。Google で検索したところ、ここで問題の解決策が見つかりました。具体的には、SelectedItem バインディングを次のように変更します。

SelectedItem="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=SelectedItem}"

期待どおりに動作させます。

SelectedItem の元の TemplateBinding が機能しないのに、ItemsSource の TemplateBinding は正常に機能するのはなぜですか?

0 投票する
1 に答える
604 参照

silverlight - Silverlight CustomControl の TemplateBinding DataContext

ComboBox コントロールのかなり興味深いケースがあります - CustomComboBox;

この ComboBox のスタイルでは、Popup には DataContext を要求する 1 つのカスタム コントロールが含まれます。

アイデア:

  • このコントロールを 1 つのページで複数回使用するには
  • masterpage コンテナで使用するには
  • masterpage コントロールには、それが存在する Page に関して異なる DataContexts が必要です

ロジック:

  • オーバーライドされた OnApplyTemplate で、グリッドを取得し、いくつかのイベントハンドラーを接続しています

問題:

  • masterpage コントロールが OnApplyTemplate を 1 回だけトリガーしている
  • CustomComboBox の最初の外観は予想どおりです。ただし、CustomComboBox のデータコンテキストを変更する場合でも、次のすべての外観は同じ DataContext です。これらの変更は、CustomGrid DataContext を変更するために到達しません

バインディングまたはプレゼンテーション ロジックに何か問題があると確信しています... 考えてみてください。ここでヒントをいただければ幸いです

ありがとう

0 投票する
2 に答える
5804 参照

c# - カスタム コントロールでの StringFormat とのバインド

WPF アプリでカスタム コントロールを使用しようとしていますが、StringFormat バインディングの使用に問題があります。

問題は簡単に再現できます。まず、WPF アプリケーションを作成し、「TemplateBindingTest」と呼びましょう。そこで、1 つのプロパティ (Text) のみを持つカスタム ViewModel を追加し、それを Window の DataContext に割り当てます。Text プロパティを「Hello World!」に設定します。

ここで、ソリューションにカスタム コントロールを追加します。カスタム コントロールは可能な限りシンプルです。

カスタム コントロールをソリューションに追加すると、Visual Studio は Generic.xaml ファイルを含む Themes フォルダーを自動的に作成しました。そこにコントロールのデフォルトのスタイルを入れましょう:

次に、コントロールをウィンドウに追加し、StringFormat を使用して Text プロパティにバインディングを設定します。また、単純な TextBlock を追加して、バインディング構文が正しいことを確認します。

コンパイル、実行、aaaaand... ウィンドウに表示されるテキストは次のとおりです。

「こんにちは世界」

Test2: ハローワールド!

カスタム コントロールでは、StringFormat は完全に無視されます。VS 出力ウィンドウにエラーは表示されません。どうしたの?

編集:回避策。

OK、TemplateBinding は誤解を招くものでした。原因と汚い回避策を見つけました。

まず、問題は Button の Content プロパティと同じであることに注意してください。

どうしたの?Reflector を使用して、BindingBase クラスの StringFormat プロパティに飛び込みましょう。「分析」機能は、このプロパティが内部DetermineEffectiveStringFormatメソッドによって使用されていることを示しています。このメソッドを見てみましょう:

問題はここにあります。effectiveStringFormat フィールドは、Binding を解決するときに使用されるフィールドです。そして、このフィールドは、DependencyProperty がタイプの場合にのみ割り当てられますString(私の場合は、ボタンの Content プロパティとしてObject)。

異議を唱える理由 私のカスタム コントロールは貼り付けたものよりも少し複雑なので、ボタンのように、コントロールのユーザーがテキストだけでなく子コントロールを提供できるようにしたいと考えています。

ならどうしよう?WPF コア コントロールにも存在する動作に遭遇しているので、そのままにしておくことができます。それでも、私のカスタム コントロールは内部プロジェクトでのみ使用され、XAML から使いやすくしたいので、次のハックを使用することにしました。

Header私の TemplateBinding で使用されるプロパティです。に値が提供されるとText、プロパティのタイプが であるため StringFormat が適用され、コールバックを使用Stringして値がプロパティに転送されHeaderます。動作しますが、本当に汚れています:

  • Headerとプロパティは、更新時に更新されTextないため、同期されていません。いくつかの間違いを避けるためにプロパティに getter を提供しないことにしましたが、誰かが DependencyProperty ( ) から値を直接読み取った場合にも発生する可能性があります。TextHeaderTextGetValue(TextProperty)
  • 値の 1 つが失われるため、誰かがHeaderTextプロパティの両方に値を提供すると、予期しない動作が発生する可能性があります。

全体として、このハックの使用はお勧めしません。プロジェクトを本当に管理している場合にのみ実行してください。コントロールが別のプロジェクトで使用される可能性が少しでもある場合は、StringFormat をあきらめてください。

0 投票する
2 に答える
15063 参照

wpf - プロパティが添付されたテンプレートバインディング

ボタンには標準のスタイルがありますが、スタイルの特定の部分を構成可能にしたいです。たとえば、ボタンに対してMouseOverがトリガーされたときに境界線が表示され、境界線の色を構成できるようにします。

この記事に続いて:http ://www.thomaslevesque.com/2011/10/01/wpf-creating-parameterized-styles-with-attached-properties/これを実現するために添付プロパティとTemplateBindingを使用できると思いました。

次の添付プロパティを作成しました。

プロパティを次のように設定します。

そして私のスタイルは次のようになります:

キーラインはどこにありますか

私が見る限り、これは機能するはずですが、実行時に上記の行で次のエラーが発生します。

属性'Value'の値をタイプ''のオブジェクトに変換できません。マークアップファイルのオブジェクト「System.Windows.Setter」でエラーが発生しました

ここで何か間違ったことをしましたか?私はWPFを初めて使用しますが、アタッチされたプロパティのタイプがブラシであるため、何が問題になっているのか理解できません。これは、BorderのBorderBrushプロパティに必要なものです。

0 投票する
1 に答える
374 参照

c# - wp7 TemplateBinding コンテンツが機能しない

私は wpf での作業が初めてで、現在次のことをしようとしています: TextBlock を含む単純な ContenctControl (CtrpushPinContent) を作成しました:

cs ファイルは次のようになります。

メインの PhoneApplicationPage で、次のことを試みます。

しかし、私の解決策はうまくいきません。の効果が見られない

問題はスタイル宣言のどこかにあると思います:

なぜなら、私はそれを

必要に応じて「TestText」を表示します。

0 投票する
2 に答える
1419 参照

binding - Knockoutjsネイティブテンプレートバインディングと文字列の単純な配列

knockoutjs ネイティブテンプレートバインディング、特にforeachバインディングを理解しようとしています。

ネイティブ入札を使用して現在のアイテムにアクセスする方法を知りたいですか?/のようなものを使用jQuery.tmplすることが可能です。データソースがプリミティブの配列であり、各アイテムに名前付きフィールドがない場合に、ネイティブテンプレートバインディングを使用して同じことを行うにはどうすればよいですか?これは2つの例を含むJSFiddleです。1つ目はデータソースがカスタムオブジェクトの配列であるネイティブバインディングを使用し、2つ目は文字列の配列にバインドします。私はそれを機能させることができません、私は明白な何かを逃しているように見えますか?$item$data

基本的に、ネイティブバインディングを理解し、ネイティブバインディングを使用して次の例をリファクタリングできるようにしようとしています。JSFiddle:チェック項目のコンマ区切りリスト。これにより、チェック項目のコンマ区切りリストを表す観測可能な変数を保持できます。

0 投票する
2 に答える
769 参照

wpf - TemplateBinding を設定して WPF エラー「テンプレートにない場合は TemplateBinding を設定できません。」を解決する方法は?

ここで概説されている例を実装しようとしています:

http://www.codeproject.com/Articles/30994/Introduction-to-WPF-Templates

作成者は、「このContentPresenterコントロールを使用して、WPF コントロールのコンテンツを表示できます」と述べています。

次のコードを使用します。

次のようにウィンドウに追加しました。

しかし、次のエラーが発生します。

どうすればこれを解決できますか?

0 投票する
0 に答える
465 参照

.net - ContentPresenter でカスタマイズされた UserControl、ネストされたオブジェクトは null

MainPage.xaml でデータ コンテナーとして使用したカスタマイズされた UserControl (CustomControl1) があります。
MainPage-CustomControl1 のコンテンツとして、いくつかのボタンを配置しました。

私のエラー/質問:
ボタンは表示されますが、ボタンのプロパティを設定しようとするとエラーが発生します。
ボタン オブジェクトは null になります…。しかし、なぜ?
さらに、開発環境でネストされたオブジェクトをクリックしても、ネストされたオブジェクトからイベントが発生しません。XAML でネストされたオブジェクトを選択した場合にのみ、[オブジェクト] -> [プロパティ] -> [イベント] を使用できます。

Silverlight ソース:
Vers.4
Ver.6、TemplateBinding およびエラーあり

何を変更する必要がありますか?
CustomControl1 の ContentPresenter バインディングのエラーである可能性があると思います。

この種の問題があるページをたくさん見つけました...しかし、エラーを修正できませんでした...

私のCustomControl1.xaml:

私の CustomControl1.xaml.cs:

私の MainPage.xaml:

0 投票する
2 に答える
661 参照

wpf - listboxitem テンプレート バインディングの値を設定する

私はこのスタイルを持っています:

私の問題は、ListBoxItems の境界線が目的の境界線ブラシを持つことになるようにスタイルを消費するときに、ListBox に設定するプロパティがわからないことです。また、私のスタイルの他の境界線ブラシでもこれを機能させたいと思います。

この同じスタイルで境界線の色が異なる 2 つのリスト ボックスを作成できるようにしたいと考えています。私はリストボックスのためにこれを持っています:

更新..私はこれを試しました:

しかし、私は得る: エラー 8 TargetName プロパティはスタイル セッターに設定できません。

0 投票する
1 に答える
273 参照

silverlight - Silverlight、UserControlsのTemplateBindingsを介したパス

私は、TextBox(Binding TextBoxText)を備えたMainPage.xamlと、いくつかのネストされたUserControlsを持っています。これらはすべて、TemplateBinding / Bindingを備えたTextBox(4つのTextBox)を備えています。
どこかでテキストを変更するときは、すべてのボックスに同じテキストを入れたいです。

解決策:リンク

すべてのテキストを同期するにはどうすればよいですか?

ありがとう!

MainPage.xaml(TextBoxTextは、どこにでも表示したいものです)

Generic.xaml: