WPF /MVVM パターン
検証属性を使用した複数のテキスト ボックスを持つユーザー コントロール。次のスタイルでは、すべてが意図したとおりに機能します。ただし、検証エラーがある場合を除き、エラー画像を設定するためにコントロール テンプレートで使用されるメソッドが原因で、フォーカスされた背景色は設定されません。
コントロール テンプレートを削除すると、検証エラーが設定されている場合、フォーカス時に背景色が正しく設定されます。テンプレートでは、背景色は常に白/デフォルトです。
両方が必要な XAML に関する提案はありますか? フォーカスされたときの異なる背景色と、検証が失敗したときのエラー画像?
<Style TargetType="{x:Type TextBox}">
<Setter Property="Margin" Value="1" />
<Setter Property="ToolTip" Value="{Binding Description}"/>
<Style.Triggers>
<Trigger Property="IsFocused" Value="True">
<Setter Property="Background" Value="LightYellow"/>
</Trigger>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip"
Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors).CurrentItem.ErrorContent}"/>
<!--adds the error image and border, but also prevents background color change OnFocus-->
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TextBox}">
<Grid>
<Border
BorderBrush="#d99" x:Name="textBorder" CornerRadius="4"
BorderThickness="2" >
<ScrollViewer Margin="0" x:Name="PART_ContentHost"/>
</Border>
<Image Name="ErrorImage" Width="24" Height="24" Margin="0,0,4,0"
Source="/Images/error.png" HorizontalAlignment="Right">
</Image>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>