TextBox.Textに設定する手順。下記のようにValidation.ErrorTemplateにバリデーションを表示するコントロールのテンプレートを設定し、Binding.ValidationRulesプロパティにExceptionValidationRuleを設定する。
ExceptionValidationRuleはバインディング ソース プロパティの更新中にスローされる例外をチェックできる。このほかにWindows Formsで使われるIDataErrorInfoに夜エラーをチェックできるDataErrorValidationRuleも使用できる。
<TextBox Width="60" TextAlignment="Right" TabIndex="1" Validation.ErrorTemplate="{StaticResource ValidationTemplate}" Style="{ StaticResource TextBoxInError}" > <TextBox.Text> <Binding Path="RecordCount" Mode="TwoWay"> <Binding.ValidationRules> <ExceptionValidationRule /> </Binding.ValidationRules> </Binding> </TextBox.Text> </TextBox>
バリデーションを表示するコントロールのテンプレートの設定例は下記。
<ControlTemplate x:Key="ValidationTemplate"> <DockPanel> <AdornedElementPlaceholder/> <TextBlock Foreground="Red" FontSize="20">!</TextBlock> </DockPanel> </ControlTemplate>
AdornedElementPlaceholderはこの場合TextBoxの位置を表し、この例ではTextBoxの後に「!」を表示する。
さらに下記の設定で例外のメッセージをTextBoxのToolTipとして表示できる。
<Style x:Key="TextBoxInError" TargetType="{x:Type TextBox}"> <Style.Triggers> <Trigger Property="Validation.HasError" Value="true"> <Setter Property="ToolTip" Value="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=(Validation.Errors)[0].ErrorContent}"/> </Trigger> </Style.Triggers> </Style>