問題タブ [dependency-properties]
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.
c# - 継承されたメンバーを非表示にする
継承されたメンバーを効果的に隠す方法を探しています。共通の基本クラスから継承するクラスのライブラリがあります。最近の子孫クラスの一部は、痕跡となった依存関係プロパティを継承しており、IntelliSenseを使用したり、ビジュアルデザイナーでクラスを使用したりすると、少し混乱する可能性があります。
これらのクラスはすべて、WPFまたはSilverlight2.0用にコンパイルされるように作成されたコントロールです。ICustomTypeDescriptor
とについては知ってICustomPropertyProvider
いますが、Silverlightでは使用できないと確信しています。
これは、ユーザビリティの問題ほど機能的な問題ではありません。私は何をすべきか?
アップデート
私が本当に隠したいプロパティのいくつかは、私自身ではない祖先からのものであり、私が設計している特定のツールのために、new
オペレーターと一緒にメンバーを隠すことはできません。(私は知っている、それはばかげている)
.net - 継承された依存関係プロパティに ChangeEvent ハンドラーをアタッチする方法は?
継承されたプロパティに propertychanged コールバックをどのようにアタッチしますか? そのような:
.net - 添付プロパティはクラス図のどこに収まりますか?
UML ダイアグラムまたは VS2008 クラス ダイアグラムのようなほぼ UML ダイアグラムで添付プロパティを表す最も適切な方法は何ですか?
.net - WPF 依存関係プロパティの登録を解除する方法はありますか?
単体テストで異常な問題が発生しています。私がテストしているクラスは、実行時に依存関係プロパティを動的に作成し、その依存関係プロパティのタイプは状況によって異なる場合があります。単体テストを作成しているときに、さまざまな型の依存関係プロパティを作成する必要があります。既存の依存関係プロパティを再定義できないため、エラーが発生します。
では、依存関係プロパティの登録を解除するか、既存の依存関係プロパティの型を変更する方法はありますか?
ありがとう!
OverrideMetadata() では、デフォルト値などのごく一部しか変更できないため、役に立ちません。AppDomain アプローチは良いアイデアであり、機能する可能性がありますが、単体テストのために実際に掘り下げたいと思っていたよりも複雑に思えます。
依存関係プロパティの登録を解除する方法が見つからなかったので、この問題を回避するために単体テストをパントして慎重に再編成しました。テスト範囲が少し狭くなっていますが、この問題は実際のアプリケーションでは決して発生せず、単体テスト中にのみ発生するため、問題はありません。
助けてくれてありがとう!
c# - イベントをトリガーせずに WPF 依存関係プロパティを設定する
ValueChanged イベントをトリガーせずに、コード内のコントロール (Slider.Value) に依存関係プロパティを設定する必要があります (ユーザーではなく値を設定するため)。WPF でこの状況を処理する最善の方法は何ですか?
明確にするために、私がやろうとしているのは、WPF スライダーを WinForms ユーザー コントロールに接続することです。現在、私のアプリには、メソッド呼び出しを介してスライダーの値を WinForms コントロールに渡す ValueChanged イベント ハンドラーがあります。WinForms コントロール (実際にはネイティブ OpenGL ウィンドウのラッパー) は、内部計算に基づいてスライダーを動的に変更できる必要があります。これを行うには、スライダー (ISlider) の抽象化を使用し、アプリでそのスライダーの WPF フレーバーをインスタンス化し、そのベースへのハンドルを WinForms ユーザー コントロールの .NET プロパティを介して WinForms コントロールに渡します。これはすべて現在機能しています。内部ロジックがスライダーを変更する必要があると判断すると、ISlider::SetPos() が呼び出され、WPF スライダーが変更され、スライダーで ValueChanged イベントがトリガーされます。そのイベントのハンドラーは、スライダーの位置を抽出し、最初にイベントを発生させた WinForms コントロールに渡します。ligaz と Alan Le による提案はどちらも機能するように見えますが、これについて最善の方法で行っているかどうかはわかりません。
wpf - DependencyProperty 値を設定するとき、Validation は Coercion の前または後に呼び出されますか?
DependencyProperty を使用して単純なクラスを作成しました。値を設定すると、ValidateValueCallback が CoerceValueCallback の前に呼び出されることがわかります。
wpftutorialや他の本では、検証の前に強制が呼び出されると記載されています。
wpf - 無関係なクラスから依存関係プロパティを「借用」することは許容されますか?
WPF で一部のコンテンツをレンダリングするクラスを作成しています。コンテンツのレンダリング方法をユーザーが制御できるようにしたいと考えています。レンダリングは主に線をなでることなので、System.Windows.Forms.Shapes.Line クラスを調べて、どのプロパティを実装する必要があるかを把握することにしました。これにより、ほとんどのStrokeXXXX
プロパティを実装することになりましたが、それぞれがレンダリングに影響を与えるメタデータを必要とするため、多くの単調な作業です。
同僚は、次のように Shape からプロパティを「借用」することを提案しました。
これはかなり良いアイデアのようです。これを行うと、強制とプロパティ変更コールバックを設定する機能が失われると思いましたが、PropertyMetadata を取るオーバーロードがこれを許可しているようです。私が見ることができる唯一の欠点は、Shape の実装が変更された場合にクラスに影響を与えることですが、.NET インターフェイスが大幅に変更される頻度は不明です。
どう思いますか?これは、よく知られているクラスが必要な動作と安定したインターフェイスを備えている場合にプロパティを定義する適切な近道ですか、それともガソリン風呂にいる間に確実に火を扱う方法ですか?
.net - 依存関係プロパティが変更されたときの通知メカニズムはありますか?
Silverlight アプリケーションで、ユーザー コントロールのプロパティがいつ変更されたかを調べようとしています。特定の DependencyProperty に興味がありますが、残念ながらコントロール自体は INotifyPropertyChanged を実装していません。
値が変更されたかどうかを判断する他の方法はありますか?
wpf - INotifyPropertyChanged と ViewModel の DependencyProperty
Model-View-ViewModel アーキテクチャの WPF アプリケーションで ViewModel を実装する場合、それをデータバインド可能にする方法として 2 つの主要な選択肢があるようです。DependencyProperty
ビューがバインドするプロパティに使用する実装を見てきましたが、INotifyPropertyChanged
代わりに ViewModel を実装しているのを見てきました。
私の質問は、いつどちらを優先すべきかということです。パフォーマンスの違いはありますか? ViewModel の依存関係を WPF に与えるのは本当に良い考えですか? 設計を決定する際に、他に何を考慮する必要がありますか?
wpf - WPFDependencyProperties
バインディング/依存関係のプロパティを強制していて、概念を根本的に理解していないことに気づきました。
依存関係プロパティは次のとおりです。
XAMLは次のとおりです。
オブジェクトのコンストラクターでプロパティを手動でProblem
値に設定していますが、それに応じて更新されませんTextBlock
。。。何か案は?バインディングを試しましたがMode="OneWay"
、Mode="TwoWay"
まだ機能しません。
これは自動的に機能するはずだと思いましたか?それとも私は根本的に何かが間違っていますか?
ありがとう