WPF TextBox验证

fengboyangjinfeng 2012-05-12 05:45:59
这个是微软给的XAML 代码。
1.TetxtBox

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

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

3.TetxtBox使用模板

<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 界面是能这样写。
...全文
771 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
luanshixiaoguai 2012-06-20
  • 打赏
  • 举报
回复
怎么解决的啊?你怎么说一半呢楼主
fengboyangjinfeng 2012-05-12
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]

引用 9 楼 的回复:
设置Style 和 ControlTemplate 可以
不写任何XAML代码,你这就异想天开了

不懂别乱说,所有XAML代码在运行时都会解析成C#(VB.Net,或者其它的)代码,所以XAML能做的事情,C#代码肯定能做,反过来则不然.
XAML的存在只是为了让UI代码与逻辑代码分离,用另外一种相对简单整洁的方式展示给UI设计人员.至于把XAML如何解析成……
[/Quote]

问题已经解决了O(∩_∩)O~
cheng2005 2012-05-12
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
设置Style 和 ControlTemplate 可以
不写任何XAML代码,你这就异想天开了
[/Quote]
不懂别乱说,所有XAML代码在运行时都会解析成C#(VB.Net,或者其它的)代码,所以XAML能做的事情,C#代码肯定能做,反过来则不然.
XAML的存在只是为了让UI代码与逻辑代码分离,用另外一种相对简单整洁的方式展示给UI设计人员.至于把XAML如何解析成后台语言,那是另外的事情了.
fengboyangjinfeng 2012-05-12
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]

引用 10 楼 的回复:

http://nonocast.cn/?s=%E9%80%9A%E8%AE%AF%E5%BD%95


我是想用这种 方式写
Style style = new Style();

Trigger tr = new Trigger();
tr.Property = TextBox.Backgroun……
[/Quote]
问题已经解决 了
fengboyangjinfeng 2012-05-12
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

http://nonocast.cn/?s=%E9%80%9A%E8%AE%AF%E5%BD%95
[/Quote]

我是想用这种 方式写
Style style = new Style();

Trigger tr = new Trigger();
tr.Property = TextBox.BackgroundProperty;
tr.Value = Brushes.Red;

Setter ste = new Setter();
ste.Property = TextBox.ToolTipProperty;
ste.Value = "文本框的颜色已设为红色";

tr.Setters.Add(ste);

textBox1.Style = style;

不过就是 不知道 Value="{Binding RelativeSource={x:Static RelativeSource.Self},
Path=(Validation.Errors)[0].ErrorContent}"/>

怎么转换

fengboyangjinfeng 2012-05-12
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

设置Style 和 ControlTemplate 可以
不写任何XAML代码,你这就异想天开了
[/Quote]

这样不就是 后台设置样式 吗?请问你试过些吗?不会就会不要乱说
Style style = new Style();

Trigger tr = new Trigger();
tr.Property = TextBox.BackgroundProperty;
tr.Value = Brushes.Red;

Setter ste = new Setter();
ste.Property = TextBox.ToolTipProperty;
ste.Value = "文本框的颜色已设为红色";

tr.Setters.Add(ste);

textBox1.Style = style;
zhujiawei7 2012-05-12
  • 打赏
  • 举报
回复
设置Style 和 ControlTemplate 可以
不写任何XAML代码,你这就异想天开了
fengboyangjinfeng 2012-05-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

http://msdn.microsoft.com/zh-cn/library/system.windows.controls.validation.geterrors(v=vs.95).aspx
[/Quote]

我是前台不写任何 XAML代码,用后台 CS代码实现 Style 和 ControlTemplate
后台来配置 Style 和ControlTemplate
fengboyangjinfeng 2012-05-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

什么叫把XAML转成后台代码?什么意思?

XAML只是个布局文件而已,后台代码才是源码啊
[/Quote]
我是前台不写任何 XAML代码,用后台 CS代码实现 Style 和 ControlTemplate
fengboyangjinfeng 2012-05-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

是不是要处理特殊符号而已。你用代码操作这些XAML代码内容吗。
[/Quote]

我是前台不写任何 XAML代码,用后台 CS代码实现 Style 和 ControlTemplate
cheng2005 2012-05-12
  • 打赏
  • 举报
回复
http://msdn.microsoft.com/zh-cn/library/system.windows.controls.validation.geterrors(v=vs.95).aspx
cheng2005 2012-05-12
  • 打赏
  • 举报
回复
public static ReadOnlyObservableCollection<ValidationError> GetErrors(
DependencyObject element
)
zhujiawei7 2012-05-12
  • 打赏
  • 举报
回复
什么叫把XAML转成后台代码?什么意思?

XAML只是个布局文件而已,后台代码才是源码啊
test2050 2012-05-12
  • 打赏
  • 举报
回复
是不是要处理特殊符号而已。你用代码操作这些XAML代码内容吗。

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧