そのため、すべてのコントロールと ValidationErrorTemplate 用の巨大なスタイル テンプレート ディクショナリを取得しました。問題は、コントロールの上に場所がない場合、コントロールの下に検証エラーを表示する必要があることです。基本的に、ウィンドウの上部にあるコントロール用です。ウィンドウの下部にあるコントロールの場合、検証はコントロールの上に表示する必要があります。
すべてのスタイルが定義されているリソース ディクショナリであるため、コード ビハインドはなく、データ バインディングもできません。
1 つのアイデアは、 の位置を決定しAdornedElementPlaceholder
、テンプレートをそれぞれ非表示/表示することです。しかし、XAML でそれを行うための解決策が見つかりません。
<ControlTemplate x:Key="ValidationErrorTemplate">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid Grid.Row="1">
<Border>
<AdornedElementPlaceholder />
</Border>
</Grid>
<AdornerDecorator Grid.Row="????">
<Border >
<!-- some style comes here ... -->
</Border>
</AdornerDecorator>
</Grid>
</ControlTemplate>
Grid.Row="????" コントロールの上部に応じて、0 または 1 のいずれかになります。