問題タブ [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.
silverlight - Silverlight4のDependencyObjectsのコレクションへのバインド
Silverlight 4以降、(以前のバージョンのFramework要素の代わりに)DependencyObjectに対してデータバインドすることが可能です。これまでのところ良好ですが、DependencyObjectsのコレクションを再度バインドするにはどうすればよいですか。
DataContextはObservableCollectionからコレクション要素に渡されないため、DependencyObjectsのDependencyPropertiesが呼び出されることはありません(変更されたイベントも呼び出されません)。DependencyObjectは、バインディングを手動で初期化するためのSetBindingまたはDataContextを提供しません。
ここでアドバイスをありがとう。
wpf - WPF カスタム DependencyProperty 通知の変更
MyComponent というクラスがあり、BackgroundProperty という名前の DependencyProperty があります。
MyBackground は DependencyObject から派生したクラスで、いくつかの DependencyProperties を持っています。
ここで、MyBackground のプロパティが変更されたときに、MyComponent に MyBackground が変更されたことを通知し、OnPropertyChanged という名前の PropertyChangedCallback を呼び出す必要があります。
c# - Linq メソッドを使用すると、WindowsBase の DependencyObject への参照が失われる
アプリケーション内で CodeDom を使用してコンパイルしたい c# ソースがあります (プラグイン用)。
一部のコレクションで Linq 拡張関数を使用する場合を除いて、すべて正常に動作します
このコードを含むソースをコンパイルしようとすると、WindowsBase の DependencyObject への参照が見つからないという CodeDom のエラーが表示されます。
なぜこれが起こっているのかわかりません。Dictionary クラスも Any 拡張メソッドも、明らかに Windows.Forms の一部であるそのクラスを参照しません。
私は通常、癖を無視し、CodeDom に参照を追加させて先に進みますが、どうやら WindowsBase は特別であり、常に配布されているわけではなく、正しくインストールされていない可能性のあるユーザーに問題を引き起こしたくありません。
silverlight - Silverlight4 の DependencyObject の DataContext とは何ですか?
以前はデータ バインディングが FrameworkElements または FrameworkContentElements でのみ機能していましたが、SL4 では DependencyObjects から派生したオブジェクトのプロパティをデータ バインドする機能が導入されていることを読みました。
ただし、DependencyObjects のプロパティをバインドするときにバインディング ソースがどのように決定されるかについては明確ではありません。
FrameworkElements の場合、要素の DataContext プロパティはソース オブジェクトです (DataContext が直接設定されていない場合は、「ツリーを上って」DataContext を見つけます)。
DependencyObjects の場合、使用される DataContext は、XAML ファイル内の「含まれる」FrameworkElement の DataContext であると推測できます。しかし、この包含オブジェクトを決定するメカニズムは何ですか?
私の特定のケースでは、FrameworkElement のプロパティである ObservableCollection に存在する DependencyObject のプロパティをバインドしようとしています。残念ながら、データバインディング システムが DependencyObject 自体を独自の DataContext として使用しているように見えるため、DependencyObject でプロパティをバインドしようとすると失敗します。バインディング式で指定された名前のプロパティが型にないことを (出力ウィンドウで) 訴えます。同じバインド式を使用して、同じ UserControl 内の FrameworkElement の依存関係プロパティをバインドすると、成功します。
wpf - グローバルレベルで依存関係プロパティ値の変更を追跡する
アプリケーション(ユーザーがキャンバスに追加できる)にいくつかのコントロールがあり、それぞれにさまざまなプロパティ(主に依存関係プロパティ)があります。ユーザーは、プロパティグリッド(色、テキストなど)を介してプロパティを変更できます。
保存機能を実装しているので、ユーザーがキャンバスに変更を加えた場合は、離れる前にドキュメントを保存するように依頼します。現在、追加/削除/サイズ変更のような操作を追跡しています(IsChangedフラグをtrueに変更)。また、ユーザーがpropertygridを介してコントロールの色を変更した場合など、ユーザーが行ったプロパティの変更を追跡したいと思います。
簡単な解決策の1つは、プロパティごとにPropertyChangedCallbackを処理し、その中にフラグを設定することです。これに伴う問題は、各コントロールのプロパティごとにPropertyChangedCallbackを記述する必要があると同時に、追加されたすべての新しいプロパティが同じことを行うようにする必要があることです。
私の質問:たとえば、グローバルな場所で、プロパティの変更を追跡する他のより良い方法はありますか?
c# - 実行時の UIElement のキャスト エラー
これを行うと実行時エラーが発生します。
私はこのクラスを持っています:
これを行うと、正常にコンパイルされますが、実行時エラーがスローされます...
私が得るエラーは、AnnObject を にキャストできないというものUIElement
です。
誰かがこの動作を簡単に説明できますか?
c# - INotifyPropertyChanged PropertyChanged イベントの送信者オブジェクトからプロパティ名を取得する方法
オブジェクトを受け取り、プロパティを取得するメソッドを持つベース DependencyObject クラスがあり、INotifyPropertyChanged を実装するタイプのプロパティごとに、新しい PropertyChangedEventHandler を追加します。ハンドラー メソッドでは、オブジェクト "sender" のパラメーターと PropertyChangedEventArgs "e" を取得します。私の質問は、送信者が INotifyPropertyChanged を実装するタイプのプロパティである場合、プロパティ名を動的に取得する方法を知っている人はいますか?
これが私が取り組んでいるものです:
SetValues メソッドの最初のパラメーターは、ビュー モデルで使用される DependencyObject 型です。2 番目のパラメータは、DomainService の Context.LoadOperation から返されるエンティティです。
私の問題は、コレクションのプロパティ名で PropertyChanged イベントを発生させる必要がある INotifyCollectionChanged.CollectionChanged が発生したときです。ですから、誰かが何かアドバイスがあれば、私はそれを大いに感謝します. 前もって感謝します。
編集
イベントを発生させているプロパティ名を取得する方法を考え出しました。これは私の PropertyChangedEventHandler の編集版です。
基本的に、これは私が探していたものを実行しますが、明らかに私はまだ正しいことをしていません。別のタイプのプロパティである ObservableCollection が追加されているときに、UIElement がまだ更新されていません。
これが私の DependencyObjects と ViewModel の例です:
c# - コードでDependencyPropertyにバインドする
複数のDependencyPropertiesを持つDependencyObjectから派生したオブジェクトがあります。このオブジェクトは指定されたものであり、このオブジェクト内にValueChangedコールバックを追加することはできません。
プロパティの変更について(xamlではなくコードで)通知を受け取りたいのですが。オブジェクトがINotifyPropertyChangedを実装する場合、PropertyChangedイベントをサブスクライブできます。これはDependencyObjectsでどのように機能しますか?
.net - WPF と Silverlight でのバインド - 実際にはどのように機能しますか?
WPF と Silverlight の内部でバインドはどのように機能しますか?
ViewModel オブジェクトに実装INotifyPropertyChanged
し、UI コントロールの依存関係プロパティも使用しました。PropertyChanged
ここで、バインド システムがイベントをサブスクライブし、プロパティの変更が通知されるたびに UI を更新するという事実を認識しています。オブジェクトの実装INotifyPropertyChanged
と継承という両方のアプローチの内部作業の詳細を知りたいです。Dependency
c# - ownerType が DependencyObject ではない DependencyProperty はどのような用途に使用されますか?
私は WPF で DependencyProperties を使い始めたばかりで、それらを理解しながらいくつかの考えを確認したいと思っていました。
以下が与えられた場合 (そして今のところ命名規則を無視します):
dp2 が TypeInitializationException をスローし、「'MyTestClass' 型は DependencyObject から派生する必要があります」というメッセージが表示されることがわかりましたが、これは予想どおりでしたが、dp1 は問題なく受け入れられました。
これで、DependencyObject ではない型にプロパティ メタデータを登録しようとしているときに dp2 が例外を発生させる理由がわかりました。これは問題ありません。カバーの下を見て、dp1とdp2の両方がたどるコードパスを見ることができるので、コードの観点からdp1が例外を発生させない理由を理解していますが、概念的にはdp1とdp2の両方が同じ例外を発生させると予想していました。
私の質問は、DependencyObject の GetValue/SetValue メソッドなしでどのように使用できるかがわからないため、ownerType が DependencyObject ではない dp1 のような DependencyProperty を作成することにどのような用途があるかです。