問題タブ [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.
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>
ますか?
c# - VisualTreeHelper が DependencyObject の子を見つけられません。オブジェクトを確実に見つけるにはどうすればよいですか?
という UserControl がありZoneContainer
ます。これにはListBox
、いくつかの を含む を含むプロパティがありますListItem
。各 ListItem にはDockPanel
.
ZoneContainer
次のコードを使用して、内部に存在するがchildrenCount
毎回0である子を見つけようとしています。
オブジェクトのリスト内で特定の子オブジェクトを見つける別の方法はありますか? 最終的には、DockPanel を見つけようとしていますが、オブジェクト内にあることがわかっていても、子が見つかりません。
wpf - WPF DependencyProperty Validation オブジェクト プロパティへのバインディング
特定のコントロール (このシナリオでは TextBox) の検証規則を作成しようとしています。
ValidationRule と DepedencyProperty を利用する適切な手順を実行しましたが、オブジェクトのプロパティへの正常な Binding を取得できません。
以下のコードを見つけてください。補足として、カスタム Validation クラスの「Is Required」は、XAML で明示的に値を設定しない限り、常に False です (「Is Ranged」パラメーターに従ってバインドなし)。
ヒントや提案をいただければ幸いです。
前もって感謝します :)
XAML コード:
検証クラス:
検証依存クラス:
wpf - DependencyObject から継承するカスタム IValueConverter
引数を現在のデータ コンテキストにバインドできるコンバーターを使用できることを試してみたかったのです。Convert() 関数に到達すると、Source プロパティが常に null になる理由を誰か教えてもらえますか?
c# - ObservableCollectionを拡張するクラスにDependencyPropertyを追加する
ObservableCollectionWithValidState
子オブジェクトの1つが検証ルールに違反したときに自分自身に通知するのに役立つというクラスがあります。
クラス:
これが起こったとき、私はDependencyProperty
このクラスにバインドできるように設定できるものが欲しいです。
問題は、私のクラスが拡張されているのに、ObservableCollection<T>
どうやってDependencyObject
写真に入るのかわからないことです。
追加したいプロパティの例とともに、クラスの最初の宣言を貼り付けています(これは、拡張できない限り機能しませんDependencyProperty
)。
私の2つの質問:
- これは可能ですか?
- それが不可能な場合、あなたが提案できる代替の実装はありますか?
wpf - WPF+MVVM: DependencyProperty が必要な場合にプレーンな古い ViewModelBase を使用する方法
MVVM サポートがバインドされている VM の依存関係プロパティに依存しているサード パーティの WPF コントロールを使用しています。コントロールに付属のサンプルは、DependencyObject から派生した ViewModelBase クラスを使用しているため、問題ありません。
私の ViewModelBase は INotifyPropertyChanged を実装しており、さまざまな理由から、これを DependencyObject に変更するのは現実的ではありません。
私の質問は、この WPF コントロールで ViewModels を使用するにはどうすればよいですか? 私が必要としているのは、単純な古い ViewModel に「依存関係オブジェクトを埋め込む」または「依存関係プロパティをプラグインする」ようなものだと思います。
ところで、私の MVVM アプリケーションはインターフェイス ベースです。つまり、SomeViewModel はどこでも ISomeViewModel です。
c# - 論理的な依存関係を階層順にリストする再帰的な方法を作成しようとしています
ウィンドウ内のすべてのビジュアルを取得するためにヘルパーを使用しましたVisualTree
が、一部の特定のコントロールが返されるリストに表示されないことがあります。これは、私が知る限り、それらがまだレンダリングされていないためです。VisualTree
列挙は、コントロールが既にレンダリングされている場合にのみ役立ちます。
現在、代わりにウィンドウ内のすべての論理オブジェクトをリストする単純な再帰的メソッドを作成しようとしているので、それらがレンダリングされる前にそれらを操作できます。
だから、これが論理ツリーのためにこのようなものを作成する私の最初の試みです:
wpf - 添付プロパティとカスタム コントロール
私は、WPF ToggleButton に AlternateContent と AlternateContentForeground のプロパティがないことをよく嘆いてきました。プロパティが添付された DependencyObject を作成すること、または ToggleButton からカスタム コントロールを派生させることに利点があるかどうか、興味がありますか?
添付プロパティは、複数のコントロールで使用できる場合に有利であるというのが私の推測です。したがって、私の場合、これらのプロパティはトグルボタンに固有であるため、派生コントロールに傾倒しています。
c# - 組み込みの変換動作をサポートするために DependencyObject で INPC を使用するのは間違っていますか?
Value プロパティを DP として定義する DependencyObject があります。また、定義済みの値のフレンドリ名を表す Presets コレクションも定義します。
UI が機能する方法は、Value プロパティにバインドするときです。値がプリセットと一致する場合はフレンドリ名を表示し、それ以外の場合は値を直接表示します。
プリセット (アイテムごとに定義され、共有されていない) を渡し、双方向バインディングを行う信頼できる方法がないため、コンバーターの使用はできません。それを UI でのバインディングに使用し、内部で変換を処理できるようにします。
FriendlyValue は既存の Value DependencyProperty に依存するため、変換ロジックを CLR ゲッター/セッターにラップするだけでよいと考えましたが、これは、実際の値 DP が変更されたときに、FriendlyValue も更新されたことを UI に通知する必要があることを意味します。また、FriendlyValue は CLR プロパティであるため、その特定のプロパティに対して INPC をサポートする必要があります。
私の質問は、これを処理するための正しい/推奨される方法ですか、それとも 2 番目の DP を使用して、その変更ハンドラーを監視し、それに応じて他のプロパティを設定し、状態変数を追加して一方が他方を設定しないようにすることです。最初に、それから再び他のものを更新します。
オブジェクトのプロパティのコードは次のとおりです...
それで、これは組み込みコンバーターの動作の良い習慣と考えられていますか?
wpf - DependencyObject サブクラスで、DependencyProperty をオーバーライドできますか?
説明のために、BizarroTextBox という名前の WPF TextBox のサブクラスを作成したいとします。ここで、IsReadOnly プロパティは既定の動作の逆の効果を持ちます。
現在、通常、非 WPF の世界では、架空の 'TextBox' コントロールの場合、比較的簡単です...
...しかし、DependencyObjects と DependencyProperties を扱うときに同様のことを行う方法/可能かどうかはわかりません。
サブクラスでプロパティのメタデータを再定義し、Coalesce 関数を使用して途中で値を反転することはできましたが、戻る途中で値を反転する方法がわかりません。
また、2 つの異なるプロパティを接続していない限り、ソースとターゲットの両方になることができないオブジェクトが 1 つしかないため、単純にブール反転コンバーターを使用することもできません。
バインディングを使用するときにバイパスされる便利なメソッドであるため、CLR ゲッター/セッターでも実行できません。
途中で合体する方法があればとても簡単ですが、私はそのようなことを知りません。それで、これはできますか?