zip's

while(true) { Write it down; Think about it; Refine it; Sleep(); }

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

推荐阅读:

http://www.codeproject.com/KB/WPF/wpfvalidation.aspx

 

TextBox

 

定制 Validation.ErrorTemplate
<TextBox x:Name="theTxtbx">
<TextBox.Style>
<Style TargetType="TextBox">
<Setter Property="Validation.ErrorTemplate">
<Setter.Value>
<ControlTemplate>
<Grid>
<Border BorderBrush="Red" BorderThickness="1">
<AdornedElementPlaceholder x:Name="adornTheTxtbx"/>
</Border>
<TextBlock Foreground="Orange" FontWeight="Bold" Margin="0,25,0,0"
Text
="{Binding ElementName=adornTheTxtbx, Path=AdornedElement.(Validation.Errors)[0].ErrorContent}"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</TextBox.Style>
<TextBox.Text>
<Binding Path="XXX">
<Binding.ValidationRules>
<ExceptionValidationRule/>
<local:ValidateXXX/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>

TIP:这里在 ControlTemplate 里为 AdornedElementPlaceHolder 命名,方便在后面的 Binding 中引用;

 

使用另外一个 TextBlock 显示
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBox x:Name="txtBx">
<TextBox.Text>
<Binding Path="XXX">
<Binding.ValidationRules>
<ExceptionValidationRule/>
<local:ValidateXXX/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
<Grid Grid.Row="1">
<TextBlock Text="{Binding ElementName=txtBx, Path=(Validation.Errors)[0].ErrorContent}" Foreground="Red" FontWeight="Bold"/>
</Grid>
</Grid>

 

 

 

 

posted on 2010-10-20 15:15  zip's  阅读(1346)  评论(0编辑  收藏  举报