Binding.ValidatesOnDataErrors Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Получает или задает значение, указывающее, включать ли объект DataErrorValidationRule.
public:
property bool ValidatesOnDataErrors { bool get(); void set(bool value); };
public bool ValidatesOnDataErrors { get; set; }
member this.ValidatesOnDataErrors : bool with get, set
Public Property ValidatesOnDataErrors As Boolean
Значение свойства
true
для включения DataErrorValidationRule; в противном случае — false
.
Примеры
В следующих примерах используется IDataErrorInfo и ValidatesOnDataErrors для проверки введенных пользователем TextBoxданных в . В первом примере создается тип данных, реализующий отчет об ошибках IDataErrorInfo проверки.
public class PersonImplementsIDataErrorInfo : IDataErrorInfo
{
private int age;
public int Age
{
get { return age; }
set { age = value; }
}
public string Error
{
get
{
return "";
}
}
public string this[string name]
{
get
{
string result = null;
if (name == "Age")
{
if (this.age < 0 || this.age > 150)
{
result = "Age must not be less than 0 or greater than 150.";
}
}
return result;
}
}
}
Public Class PersonImplementsIDataErrorInfo
Implements System.ComponentModel.IDataErrorInfo
Private m_age As Integer
Public Property Age() As Integer
Get
Return m_age
End Get
Set(ByVal value As Integer)
m_age = value
End Set
End Property
Public ReadOnly Property [Error]() As String _
Implements System.ComponentModel.IDataErrorInfo.Error
Get
Return ""
End Get
End Property
Default Public ReadOnly Property Item(ByVal name As String) As String _
Implements System.ComponentModel.IDataErrorInfo.Item
Get
Dim result As String = Nothing
If name = "Age" Then
If Me.m_age < 0 OrElse Me.m_age > 150 Then
result = "Age must not be less than 0 or greater than 150."
End If
End If
Return result
End Get
End Property
End Class
В следующем примере свойство привязывается Age
к TextBox и задает значение true
ValidatesOnDataErrors в Binding. Когда пользователь вводит недопустимое значение, в элементе TextBox отображается красная граница, и ToolTip отображается сообщение об ошибке.
<StackPanel Margin="20">
<StackPanel.Resources>
<src:PersonImplementsIDataErrorInfo x:Key="data"/>
<!--The tool tip for the TextBox to display the validation error message.-->
<Style x:Key="textBoxInError" TargetType="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>
</StackPanel.Resources>
<TextBlock>Enter your age:</TextBlock>
<TextBox Style="{StaticResource textBoxInError}">
<TextBox.Text>
<!--ValidatesOnDataErrors to is set to True, so the Binding
checks for errors raised by the IDataErrorInfo object.
An alternative syntax is to add <DataErrorValidationRule/> within
the <Binding.ValidationRules> section.-->
<Binding Path="Age" Source="{StaticResource data}"
ValidatesOnDataErrors="True"
UpdateSourceTrigger="PropertyChanged">
</Binding>
</TextBox.Text>
</TextBox>
<TextBlock>Mouse-over to see the validation error message.</TextBlock>
</StackPanel>
Комментарии
Задание этого свойства является альтернативой явному DataErrorValidationRule использованию элемента. — это встроенное DataErrorValidationRule правило проверки, которое проверяет наличие ошибок, вызванных IDataErrorInfo реализацией исходного объекта. Если возникает ошибка, подсистема привязки создает ValidationError объект с ошибкой и добавляет его в Validation.Errors коллекцию привязанного элемента. Отсутствие ошибки очищает этот отзыв о проверке, если другое правило не вызывает проблему проверки.
ValidatesOnDataErrorsпредставлен в платформа .NET Framework версии 3.5. Дополнительные сведения см. в разделе Платформа.NET Framework: версии и зависимости.