問題タブ [adornerlayer]
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 - 動的に追加されたコントロールの初期検証
WPF 検証システムは、オブジェクトの初期検証を実行します (つまり、データバインドされたアイテムが変更されるとすべてのフィールドが検証され、結果が UI に表示されます)。しかし、コントロールを動的に追加すると、このようには機能しません。このような場合、最初の検証が行われますが、結果は UI に表示されません。データバインドされたオブジェクトのいくつかのプロパティが変更された後でのみ、すべてが正しく機能し始めます。これが粗いサンプルです。
MyObject クラスがあるとします
また、MyObject オブジェクトの編集を可能にする MyUserControl などのユーザー コントロールもあります。どういうわけか次のようになります。
現在、このコントロールが xaml のメイン ウィンドウ (またはコンストラクターまたはウィンドウ ロード イベントのコード ビハインド) に追加されている場合、MyCustomControl.DataContext が MyObject クラスの新しいインスタンスに設定されている場合よりも、Name フィールドがすぐに検証され、エラー通知が行われます。検証エラー テンプレートを使用して表示されます。ただし、MyCustomControl が動的に追加されると (たとえば、ボタンがクリックされた後)、最初の検証が行われますが、UI に結果が表示されません (赤い境界線がないなど)。
アプリケーション ウィンドウがドックパネル (dockPanel) とボタンで構成されているとします。
なんで?
wpf - いいえ、Adorner は WPF で AdornedElement の DataContext を自動的に取得しません。
元の質問: Adorner
WPF の「AdornedElement」の「DataContext」を自動的に継承しますか?
wpf - GetAdornerLayer は、コントロールとその adorner に対して同じレイヤーを返しますか?
コントロールで GetAdornerLayer(control) を呼び出してレイヤーに adorner を追加すると、GetAdornerLayer(adorner) を呼び出すと同じレイヤーが返されますか? コントロールに装飾を追加するコードがあり、コントロールがなくなるとその装飾を削除する必要があるためです。その時点でビジュアル ツリーから既に削除されているため、コントロールの Unloaded イベントで GetAdornerLayer(control) を呼び出すことはできませんが、GetAdornerLayer(adorner) は機能しているように見えます。
wpf - HwndSourceはAdornerレイヤーを表示しません
HwndSourceでアドナー(テキストボックスのエラー境界)を使用するWPFコントロールをホストすると、アドナーが表示されません。アドナーレイヤーがないようです。それはなぜですか、それに対して私は何ができますか?これは既知のバグですか?
c# - GetAdornerLayer が不思議なことに null を返す
アプリのいくつかのバージョンで同じコードを問題なく使用してきましたが、不思議なことNullRerefenceException
に次の s を受け取っています。
background
単なるBorder
要素です。
何が原因であるかについての私の2つの考えは、a).NET 4.0への切り替え、およびb)上記の要素( a )のインスタンスUserControl
をItemsControl
.
奇妙なことに、これは常に発生するわけではなく、いつ発生するかを予測するのは難しいため、信頼できません。
wpf - WPF AdornerLayer または Window の外に Adorner を移動する
マウスカーソルと一緒に動く装飾があります。ただし、マウスがウィンドウの外に移動するとすぐに、装飾が切り取られます。
装飾レイヤーを画面全体に拡張するか、新しい装飾レイヤーを作成することは可能ですか。
wpf - Validation ErrorTemplate がデータ エラーに表示されない
これはちょっとした WPF の whodunnit です。私の検証テンプルは、期待どおりに表示されません
問題
基本的に、ビュー モデルで IDataErrorInfo を使用して、データ入力エラーに関するフィードバックを提供しています。これが呼び出されて期待どおりに動作していることがわかりますが、バインドされたコントロールの検証エラー テンプレートが WPF によって表示されることはありません。
組み込みのデフォルトのテキストボックスの赤枠エラー テンプレート、スタイル エラー テンプレート、およびハード コーディングされたテンプレートの両方を使用してみました。これらはいずれも、データ エラーの状況では表示されません。
Heres 私の xaml バインディング コード:
奇妙なことに、エラーは Validation.Errors コレクションに入ります。次のコードにより、バインドされたコントロールの横に IDataErrorInfo エラー メッセージが表示されます。これにより、問題はviewmodel側ではなくxaml側にあると思います。
さらに、
System.Windows.Controls.Validation.GetHasError(txtCaseNumber)
true を返します。
それが違いを生む場合、私はwinformsでWPFをホストしています。私のコードやスタイルで Validation または ErrorTemplate への参照が見つからないので、これがスタイリング自体の目標ではないと確信しています。
wpf - Error Adorner in a Scrollviewer
I'm trying to ensure that my error adorners don't get clipped by my scrollviewer's bounds. I have a series of textboxes that are at the edge of a fixed width scrollviewer (no horizontal scrolling, only vertical). I then have adorners that flag textboxes with errors.
The problem is that the adorners get clipped at the edge of the scrollviewer.
Any ideas?
*Note: I have tried wrapping everything in AdornerDecorator.
c# - WPF Adorner を表示する方法
MoveAdorner をいつ、どのようにアクティブ化/可視化するかについて少し苦労しています。
私は次のことを試みますが、成功しません: 装飾される要素で、GotFocus イベントに Adorner を追加します。それだけでは不十分なので、InvalidateVisual() への呼び出しを追加しました。しかし、何も起こりません。それらのアドナーを可視化する方法についてのヒントはありますか?
明確化のために: 装飾された要素は、カスタム ItemsControl の派生 Panel 内に配置される Control です。
は、コントロールの上部と下部の行にある 2 つのボックスから派生し、単純に描画しますMoveAdorner
。Adorner
よろしく
wpf - Wpf Adorner がインタラクションに応答しない
Webで画像をポップアップするために見つけることができるものと同様に、wpfでオーバーレイを作成しようとしています(背景が暗くなります)。アプリケーションの複数の部分で、さまざまな種類のコンテンツで再利用できるようにしたいと考えています。
これは、装飾クラスのコンストラクターの一時的なコードです (試してみてください)。
(もちろん) クラスに加えて、装飾された要素、GetVisualChild、および VisualChildCount の正しいサイズを装飾者に与えるために、MeasureOverride と ArrangeOverride の ovverride があります。
ここでの問題は、装飾が正しく表示されますが、装飾された要素にイベントや動作が適用されないことです。例えば:
ここにボタンが表示されていますが、ボタンをクリックすることはできず、ボタンのマウスオーバーに対する効果は適用されません。私はまだ問題を理解できません。