日期:2014-05-18  浏览次数:20699 次

WPF TextBox验证
这个是微软给的XAML 代码。
1.TetxtBox
XML code

<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>


2. TextBox模板
XML code

<ControlTemplate x:Key="validationTemplate">
  <DockPanel>
    <TextBlock Foreground="Red" FontSize="20">!</TextBlock>
    <AdornedElementPlaceholder/>
  </DockPanel>
</ControlTemplate>


3.TetxtBox使用模板
XML code

<TextBox Name="textBox1" Width="50" FontSize="15"
         Validation.ErrorTemplate="{StaticResource validationTemplate}"
         Style="{StaticResource textBoxInError}"
         Grid.Row="1" Grid.Column="1" Margin="2">
  <TextBox.Text>
    <Binding Path="Age" Source="{StaticResource ods}"
             UpdateSourceTrigger="PropertyChanged" >
      <Binding.ValidationRules>
        <c:AgeRangeRule Min="21" Max="130"/>
      </Binding.ValidationRules>
    </Binding>
  </TextBox.Text>
</TextBox



我想将它转换为后台代码时遇到的问题
1.
 <Setter Property="ToolTip"
  Value="{Binding RelativeSource={x:Static RelativeSource.Self},
  Path=(Validation.Errors)[0].ErrorContent}"/>
这句不知道怎么转换为后台代码

2.ControlTemplate 我已经在后台写好了 但不知道怎么赋值给TextBox 的 Validation.ErrorTemplate
因为在后台找不到 TextBox 的Validation.ErrorTemplate 属性,但是XAML 界面是能这样写。

------解决方案--------------------
是不是要处理特殊符号而已。你用代码操作这些XAML代码内容吗。
------解决方案--------------------
什么叫把XAML转成后台代码?什么意思?

XAML只是个布局文件而已,后台代码才是源码啊
------解决方案--------------------
http://nonocast.cn/?s=%E9%80%9A%E8%AE%AF%E5%BD%95
------解决方案--------------------
探讨
设置Style 和 ControlTemplate 可以
不写任何XAML代码,你这就异想天开了