問題タブ [errortemplate]

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 投票する
0 に答える
352 参照

c# - WPF : 装飾されたコントロールの Validation.ErrorTemplate の DataTemplate からコントロールを取得する方法

検証をトリガーするために INotifyDataErrorInfo を使用しています。

Validation.ErrorTemplate からコントロールを取得できません。その高さを装飾された要素の下マージンに追加して、装飾された要素の下にエラーが表示され、下のコントロールが下に移動するようにするには、スタックパネルの実際の高さが必要です。

コンバーター内でビジュアル ツリーを使用しようとしましたが、何も起こりません。また、XAML を使用してみましたが、まだ何もありません。

検証エラー テンプレート内のコントロールを何らかの形でコンバーターへのパラメーターとして取得するか、実際の高さを抽出するためにコンバーター内のコードでそれらを取得することを期待しています。

このテンプレートでデフォルトで何が起こっているかを次に示します。これ が期待される結果です

検証エラーが発生したときに期待される結果を得るために、元のコントロール (TextBox) に下マージンとして追加するために、そのスタックパネルの高さを取得したいと考えています。 ツリー ビュー コンバーターのコード サンプル

編集:私は部分的な解決策を見つけることができました、

問題は、このコンバーターが 2 回トリガーされることです。1 回目は以前の検証エラーをクリアするとき、2 回目はエラーを追加するときです。初めて templatedAdorner を見つけて読み取るのは、実際の高さです。しかし、2 回目は adorner レイヤーが見つかったが、templatedAdorned が存在しない場合 (null)。私のビジュアルツリーでは、それらを見ることができます。また、ビューには正しく表示されますが、検証エラーの数も正しくありません。

トリガーは ErrorsChanged?.Invoke(this, new DataErrorsChangedEventArgs(propertyName)); です。INotifyDataErrorInfo から。