問題タブ [dependencyobject]

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 に答える
475 参照

wpf - WPFDependencyPropertyチェーン通知

私はWPFの世界を探索していますが、xmlでバインディングを使用する方法についてWeb上で素晴らしい例を見つけました

http://www.codeproject.com/Articles/37854/How-to-Perform-WPF-Data-Binding-Using-LINQ-to-XML

今、私はこの例を拡張しようとしています:とUIの間に「中間のクラス」を作成XElementし、チェーン内のすべてのtoghederをバインドしたいので、xmlに変更を加えた場合、中間にプロパティがありますクラスが更新され、UIも更新されました。

ここにいくつかのコードがあります:

これは、をラップするクラスですXElement

これはMiddleClass

本は、本を表すクラスです。今のところ、名前だけが適切であるとしましょう。

UIクラスはありませんが、パブリックList<Book>BookListにバインドし、ユーザーに本の名前を表示する必要があります。ListBox

Enyoneは、なぜ通知を受け取らないのか、またはパブリックList<Book>ブックリストをプライベートと同期させるために何をしなければならないのかを知っていIEnumerable<XBookList>ますか?

0 投票する
3 に答える
2426 参照

c# - VisualTreeHelper が DependencyObject の子を見つけられません。オブジェクトを確実に見つけるにはどうすればよいですか?

という UserControl がありZoneContainerます。これにはListBox、いくつかの を含む を含むプロパティがありますListItem。各 ListItem にはDockPanel.

ZoneContainer次のコードを使用して、内部に存在するがchildrenCount毎回0である子を見つけようとしています。

オブジェクトのリスト内で特定の子オブジェクトを見つける別の方法はありますか? 最終的には、DockPanel を見つけようとしていますが、オブジェクト内にあることがわかっていても、子が見つかりません。

0 投票する
4 に答える
3929 参照

wpf - WPF DependencyProperty Validation オブジェクト プロパティへのバインディング

特定のコントロール (このシナリオでは TextBox) の検証規則を作成しようとしています。

ValidationRule と DepedencyProperty を利用する適切な手順を実行しましたが、オブジェクトのプロパティへの正常な Binding を取得できません。

以下のコードを見つけてください。補足として、カスタム Validation クラスの「Is Required」は、XAML で明示的に値を設定しない限り、常に False です (「Is Ranged」パラメーターに従ってバインドなし)。

ヒントや提案をいただければ幸いです。

前もって感謝します :)

XAML コード:

検証クラス:

検証依存クラス:

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

wpf - DependencyObject から継承するカスタム IValueConverter

引数を現在のデータ コンテキストにバインドできるコンバーターを使用できることを試してみたかったのです。Convert() 関数に到達すると、Source プロパティが常に null になる理由を誰か教えてもらえますか?

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

c# - ObservableCollectionを拡張するクラスにDependencyPropertyを追加する

ObservableCollectionWithValidState子オブジェクトの1つが検証ルールに違反したときに自分自身に通知するのに役立つというクラスがあります。

クラス:

これが起こったとき、私はDependencyPropertyこのクラスにバインドできるように設定できるものが欲しいです。

問題は、私のクラスが拡張されているのに、ObservableCollection<T>どうやってDependencyObject写真に入るのかわからないことです。

追加したいプロパティの例とともに、クラスの最初の宣言を貼り付けています(これは、拡張できない限り機能しませんDependencyProperty)。

私の2つの質問:

  1. これは可能ですか?
  2. それが不可能な場合、あなたが提案できる代替の実装はありますか?
0 投票する
1 に答える
472 参照

wpf - WPF+MVVM: DependencyProperty が必要な場合にプレーンな古い ViewModelBase を使用する方法

MVVM サポートがバインドされている VM の依存関係プロパティに依存しているサード パーティの WPF コントロールを使用しています。コントロールに付属のサンプルは、DependencyObject から派生した ViewModelBase クラスを使用しているため、問題ありません。

私の ViewModelBase は INotifyPropertyChanged を実装しており、さまざまな理由から、これを DependencyObject に変更するのは現実的ではありません。

私の質問は、この WPF コントロールで ViewModels を使用するにはどうすればよいですか? 私が必要としているのは、単純な古い ViewModel に「依存関係オブジェクトを埋め込む」または「依存関係プロパティをプラグインする」ようなものだと思います。

ところで、私の MVVM アプリケーションはインターフェイス ベースです。つまり、SomeViewModel はどこでも ISomeViewModel です。

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

c# - 論理的な依存関係を階層順にリストする再帰的な方法を作成しようとしています

ウィンドウ内のすべてのビジュアルを取得するためにヘルパーを使用しましたVisualTreeが、一部の特定のコントロールが返されるリストに表示されないことがあります。これは、私が知る限り、それらがまだレンダリングされていないためです。VisualTree列挙は、コントロールが既にレンダリングされている場合にのみ役立ちます。

現在、代わりにウィンドウ内のすべての論理オブジェクトをリストする単純な再帰的メソッドを作成しようとしているので、それらがレンダリングされる前にそれらを操作できます。

だから、これが論理ツリーのためにこのようなものを作成する私の最初の試みです:

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

wpf - 添付プロパティとカスタム コントロール

私は、WPF ToggleButton に AlternateContent と AlternateContentForeground のプロパティがないことをよく嘆いてきました。プロパティが添付された DependencyObject を作成すること、または ToggleButton からカスタム コントロールを派生させることに利点があるかどうか、興味がありますか?

添付プロパティは、複数のコントロールで使用できる場合に有利であるというのが私の推測です。したがって、私の場合、これらのプロパティはトグルボタンに固有であるため、派生コントロールに傾倒しています。

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

c# - 組み込みの変換動作をサポートするために DependencyObject で INPC を使用するのは間違っていますか?

Value プロパティを DP として定義する DependencyObject があります。また、定義済みの値のフレンドリ名を表す Presets コレクションも定義します。

UI が機能する方法は、Value プロパティにバインドするときです。値がプリセットと一致する場合はフレンドリ名を表示し、それ以外の場合は値を直接表示します。

プリセット (アイテムごとに定義され、共有されていない) を渡し、双方向バインディングを行う信頼できる方法がないため、コンバーターの使用はできません。それを UI でのバインディングに使用し、内部で変換を処理できるようにします。

FriendlyValue は既存の Value DependencyProperty に依存するため、変換ロジックを CLR ゲッター/セッターにラップするだけでよいと考えましたが、これは、実際の値 DP が変更されたときに、FriendlyValue も更新されたことを UI に通知する必要があることを意味します。また、FriendlyValue は CLR プロパティであるため、その特定のプロパティに対して INPC をサポートする必要があります。

私の質問は、これを処理するための正しい/推奨される方法ですか、それとも 2 番目の DP を使用して、その変更ハンドラーを監視し、それに応じて他のプロパティを設定し、状態変数を追加して一方が他方を設定しないようにすることです。最初に、それから再び他のものを更新します。

オブジェクトのプロパティのコードは次のとおりです...

それで、これは組み込みコンバーターの動作の良い習慣と考えられていますか?

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

wpf - DependencyObject サブクラスで、DependencyProperty をオーバーライドできますか?

説明のために、BizarroTextBox という名前の WPF TextBox のサブクラスを作成したいとします。ここで、IsReadOnly プロパティは既定の動作の逆の効果を持ちます。

現在、通常、非 WPF の世界では、架空の 'TextBox' コントロールの場合、比較的簡単です...

...しかし、DependencyObjects と DependencyProperties を扱うときに同様のことを行う方法/可能かどうかはわかりません。

サブクラスでプロパティのメタデータを再定義し、Coalesce 関数を使用して途中で値を反転することはできましたが、戻る途中で値を反転する方法がわかりません。

また、2 つの異なるプロパティを接続していない限り、ソースとターゲットの両方になることができないオブジェクトが 1 つしかないため、単純にブール反転コンバーターを使用することもできません。

バインディングを使用するときにバイパスされる便利なメソッドであるため、CLR ゲッター/セッターでも実行できません。

途中で合体する方法があればとても簡単ですが、私はそのようなことを知りません。それで、これはできますか?