0
Проблема Silverlight не уведомляет меня об исключениях, если я непосредственно нажимаю кнопку. Все в порядке, если я написал что-то в текстовом поле и удалил его.Проверка Silverlight не работает должным образом
У меня есть класс с именем UserLogin.
public class UserLogin
{
//---------------------------------------------------
// Fields
private string _userName;
private string _password;
//----------------------------------------------------
// Properties
public string Username
{
get
{
return _userName;
}
set
{
if (value.Length==0)
{
throw new Exception("You must enter Username");
}
_userName = value;
}
}
public string Password
{
get
{
return _password;
}
set
{
if (value.Length==0)
{
throw new Exception("You must enter password");
}
_password = value;
}
}
}
И в XAML:
<StackPanel BindingValidationError="LoginStackPanel_BindingValidationError">
<TextBox x:Name="UsernameTextBox" Text="{Binding Username, Mode=TwoWay, ValidatesOnExceptions=True, NotifyOnValidationError=True}"/>
<PasswordBox x:Name="PasswordBox" Password="{Binding Password, Mode=TwoWay,ValidatesOnExceptions=True, NotifyOnValidationError=True}"/>
<Button x:Name="LoginButton" Content="Sign In" />
</StackPanel>
И вот это событие BindingValidationError. Я просто меняю фон объектов и настраиваю подсказку для них.
private void LoginStackPanel_BindingValidationError(object sender, ValidationErrorEventArgs e)
{
if (e.Action == ValidationErrorEventAction.Added)
{
if (e.OriginalSource is TextBox)
{
(e.OriginalSource as TextBox).Background = new SolidColorBrush(Colors.Yellow);
ToolTipService.SetToolTip((e.OriginalSource as TextBox), e.Error.Exception.Message);
}
else if (e.OriginalSource is PasswordBox)
{
(e.OriginalSource as PasswordBox).Background = new SolidColorBrush(Colors.Yellow);
ToolTipService.SetToolTip((e.OriginalSource as PasswordBox), e.Error.Exception.Message);
}
}
else if (e.Action == ValidationErrorEventAction.Removed)
{
if (e.OriginalSource is TextBox)
{
(e.OriginalSource as TextBox).Background = new SolidColorBrush(Colors.White);
ToolTipService.SetToolTip((e.OriginalSource as TextBox), null);
}
else if (e.OriginalSource is PasswordBox)
{
(e.OriginalSource as PasswordBox).Background = new SolidColorBrush(Colors.White);
ToolTipService.SetToolTip((e.OriginalSource as PasswordBox), null);
}
}
}