标签:style blog class code java tar javascript ext width color get
<Window.Resources> <!--数据源--> <local:Person Age="100" Name="Tom" x:Key="Data"></local:Person> <!--TextBox模板--> <Style TargetType="{x:Type TextBox}"> <Style.Triggers> <!--验证触发--> <Trigger Property="Validation.HasError" Value="True"> <!--错误信息模板--> <Setter Property="Validation.ErrorTemplate"> <Setter.Value> <ControlTemplate> <DockPanel LastChildFill="True"> <Border Background="Red" DockPanel.Dock="Right" Margin="5,0,0,0" Width="20" Height="20" CornerRadius="20" ToolTip="{Binding ElementName=customAdorner,Path=AdornedElement.(Validation.Errors)[0].ErrorContent}"> <TextBlock Text="*" VerticalAlignment="Center" HorizontalAlignment="Center" FontWeight="Bold" Foreground="White"/> </Border> <!--占位,表示修饰控件相对于ControlTemplate中其它元素所放置的位置(这个示例中用于文本框的占位)--> <AdornedElementPlaceholder Name="customAdorner" VerticalAlignment="Center"> <Border BorderBrush="Red" BorderThickness="1"></Border> </AdornedElementPlaceholder> </DockPanel> </ControlTemplate> </Setter.Value> </Setter> </Trigger> </Style.Triggers> </Style> </Window.Resources> <Grid> <TextBox Height="35" Width="120" Text="{Binding Source={StaticResource Data},Path=Age,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True,ValidatesOnExceptions=True, NotifyOnValidationError=True}" /> </Grid>
using System; using System.Collections.Generic; using System.ComponentModel; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; namespace WpfCommand.Models { public class Person:INotifyPropertyChanged,IDataErrorInfo { private string _name; public string Name { get { return _name; } set { _name = value; RaisePropertyChanged("Name"); } } private int _age; // [Range] ValidationAttribute:(需要添加 System.ComponentModel.DataAnnotations.dll)
[Range(19,99,ErrorMessage="未成年")]
public int Age { get { return _age; } set { _age = value; RaisePropertyChanged("Age"); } } public string Error { get { return ""; } } //索引器 public string this[string ColumnName] { get { var vc = new ValidationContext(this, null, null); vc.MemberName = ColumnName; var res = new List<ValidationResult>(); var result = Validator.TryValidateProperty(this.GetType().GetProperty(ColumnName).GetValue(this, null), vc, res); if (res.Count > 0) { return string.Join(Environment.NewLine,res.Select(r=>r.ErrorMessage).ToArray()); } return string.Empty; } } public event PropertyChangedEventHandler PropertyChanged; public virtual void RaisePropertyChanged(string propertyName) { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } } }
标签:style blog class code java tar javascript ext width color get
原文地址:http://www.cnblogs.com/wywnet/p/3701509.html