3行グリッド内にMenu、ContentPresenter、およびExpanderを持つDataTemplate( "OrderEntryViewModel"の場合)として定義されたビューがあります。ContentPresenterのコンテンツは、別のviewModel "OrderViewModel"(別のDataTemplate定義のビューがあります)にバインドされます。エクスパンダのZIndexは99であるため、UPに拡張すると、他のコントロール(ContentPresenterなど)の上に拡張されます。
ContentPresenterのコンテンツ(OrderViewModel)にデータエラーがある場合を除いて、これはすべて期待どおりに機能します...私のOrderViewは、無効なデータを持つコントロールの周りにカスタム検証エラーテンプレートを表示します。エキスパンダーを展開すると、ContentPresenter内のすべてのコントロールがカバーされますが、表示されている赤い境界線と感嘆符は、エキスパンダーを通して引き続き表示されます。エクスパンダのZIndexが99で、ContentPresenterのZIndexが0であることを確認しました。誰かがこれを手伝ってくれますか?
説明に役立つ画像を次に示します。
最初の画像は、展開されていないときのビューがどのように見えるかを示しています。
2番目の画像は、展開したときのビューがどのように見えるかを示しています。
検証エラーテンプレートを次のように定義します。
<ControlTemplate x:Key="ValidationErrorTemplate">
<DockPanel LastChildFill="true">
<Border Background="Red" DockPanel.Dock="right" Margin="5,0,0,0" Width="10" Height="10" CornerRadius="5"
ToolTip="{Binding AdornedElement.(Validation.Errors).CurrentItem.ErrorContent, ElementName=customAdorner}">
<TextBlock Text="!" VerticalAlignment="center" HorizontalAlignment="center" FontWeight="Bold" Foreground="White"/>
</Border>
<AdornedElementPlaceholder x:Name="customAdorner" VerticalAlignment="Center">
<Border BorderBrush="red" BorderThickness="1" />
</AdornedElementPlaceholder>
</DockPanel>
</ControlTemplate>
そして、それを次のような特定のコントロールに割り当てます(これが、TextBoxに対して行う方法です)。
<Style TargetType="{x:Type TextBox}" x:Key="ValidatedStyleTextBox">
<Style.Triggers>
<DataTrigger Binding="{Binding IsLocked}" Value="True">
<Setter Property="Validation.ErrorTemplate" Value="{x:Null}"/>
</DataTrigger>
<DataTrigger Binding="{Binding IsLocked}" Value="False">
<Setter Property="Validation.ErrorTemplate" Value="{StaticResource ValidationErrorTemplate}"/>
</DataTrigger>
</Style.Triggers>
</Style>