IDE:VS2017
新稱一個類別
public class PropertyValidateModel : IDataErrorInfo
{
public string this[string columnName] {
get {
List<ValidationResult> validationResults = new List<ValidationResult>();
bool result = Validator.TryValidateProperty(
GetType().GetProperty(columnName).GetValue(this),
new ValidationContext(this)
{
MemberName = columnName
},
validationResults);
if (result)
return null;
return validationResults.First().ErrorMessage;
}
}
public string Error {
get {
return null;
}
}
}
這裡需要繼承 INotifyPropertyChanged與PropertyValidateModelInterFace喔
private string _User;
[Required, StringLength(50)]
public string User {
get { return _User; }
set {
_User = value;
this.NotifyPropertyChanged(o => o.User);
}
}
XMAL
<TextBox Width="300" Text="{Binding User,UpdateSourceTrigger=PropertyChanged, NotifyOnValidationError=True, ValidatesOnDataErrors=True}" Margin="0,0,0,10">
<Validation.ErrorTemplate>
<ControlTemplate>
<StackPanel>
<AdornedElementPlaceholder x:Name="textBox" />
<TextBlock Text="{Binding [0].ErrorContent}" Foreground="Red" />
</StackPanel>
</ControlTemplate>
</Validation.ErrorTemplate>
</TextBox>
