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>
Last 5 posts in .Net Framework
- CanExecuteのTrue,Falseを変更してもコマンド実行の可否がGUIに反映されない場合には - April 12th, 2011
- WebRequestの最大接続数を設定ファイルで変更するには - April 9th, 2011
- WebRequestの最大同時接続数を変更するには - April 5th, 2011