Мне нужно проверить, введены ли данные в поле.Для TextBox
это просто:
XML-код
<Window.Resources>
<ControlTemplate x:Key="validationTemplate">
<DockPanel>
<TextBlock Foreground="Red" FontSize="20">!</TextBlock>
<AdornedElementPlaceholder/>
</DockPanel>
</ControlTemplate>
<Style x:Key="textBoxInError" TargetType="{x:Type 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>
</Window.Resources>
<TextBox x:Name="loginTextBox" Validation.ErrorTemplate="{StaticResource validationTemplate}" Style="{StaticResource textBoxInError}"
HorizontalAlignment="Left" Height="23" Margin="135,0,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="250">
<TextBox.Text>
<Binding Path="Login" >
<Binding.ValidationRules>
<local:ValidationRuleModel />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
Код класса ValidationRuleModel
public class ValidationRuleModel : ValidationRule
{
public ValidationRuleModel()
{
}
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
try
{
if (string.IsNullOrEmpty((string)value))
{
return new ValidationResult(false, "Enter the data in the field");
}
else
{
return ValidationResult.ValidResult;
}
}
catch (Exception e)
{
return new ValidationResult(false, "Illegal characters or " + e.Message);
}
}
}
Но как это сделать для PasswordBoxes
.Поскольку Password
не может быть привязан из-за соображений безопасности,
<PasswordBox.Password>
<Binding Path="Password" >
<Binding.ValidationRules>
<local:ValidationRuleModel />
</Binding.ValidationRules>
</Binding>
</PasswordBox.Password>
не может быть выполнено.Я попытался использовать подсказки из здесь и здесь , но ничего не произошло.
Итак, как проверить, вводил ли пользователь данные в поле PasswordBox?