【发布时间】:2018-10-25 04:15:27
【问题描述】:
我需要检查是否在字段中输入了数据。对于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>
做不到。我尝试使用来自here 和here 的提示,但没有任何反应。
那么,如何检查用户是否在PasswordBox字段中输入了数据?
【问题讨论】:
标签: c# wpf validation passwords