Próbuję sprawdzić poprawność formularza WPF wobec obiektu. Sprawdzanie poprawności jest wywoływane, gdy wpisuję coś w polu tekstowym, w którym fokus powraca do pola tekstowego, a następnie kasuje to, co napisałem. Ale jeśli po prostu wczytam aplikację WPF i tabulator poza pole tekstowe bez pisania i usuwania niczego z pola tekstowego, to nie jest on uruchamiany.Walidacja WPF nie wypalanie na pierwszym LostFocus z TextBox
Oto klasa Customer.cs:
public class Customer : IDataErrorInfo
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Error
{
get { throw new NotImplementedException(); }
}
public string this[string columnName]
{
get
{
string result = null;
if (columnName.Equals("FirstName"))
{
if (String.IsNullOrEmpty(FirstName))
{
result = "FirstName cannot be null or empty";
}
}
else if (columnName.Equals("LastName"))
{
if (String.IsNullOrEmpty(LastName))
{
result = "LastName cannot be null or empty";
}
}
return result;
}
}
}
A oto kod WPF:
<TextBlock Grid.Row="1" Margin="10" Grid.Column="0">LastName</TextBlock>
<TextBox Style="{StaticResource textBoxStyle}" Name="txtLastName" Margin="10"
VerticalAlignment="Top" Grid.Row="1" Grid.Column="1">
<Binding Source="{StaticResource CustomerKey}" Path="LastName"
ValidatesOnExceptions="True" ValidatesOnDataErrors="True"
UpdateSourceTrigger="LostFocus"/>
</TextBox>
+1 Sprytne rozwiązanie! –
Niestety można to zastosować z logiką MVVM. Jakieś wskazówki, jak to zrobić, gdy nie chcesz modyfikować swojego kodu? – FanaticD