如果单击“创建”按钮,它将检查所有字段是否为空并验证与否。如果缺少任何内容,则会显示验证消息。
查看:
<ControlTemplate x:Key="validationErrorTemplate">
<ControlTemplate.Resources>
<Style x:Key="textblockErrorTooltip" TargetType="TextBlock">
<Setter Property="HorizontalAlignment" Value="Center" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="FontWeight" Value="Bold" />
<Setter Property="Foreground" Value="White" />
<Setter Property="Margin" Value="10 0 10 0" />
</Style>
</ControlTemplate.Resources>
<DockPanel>
<Border Height="Auto"
Margin="5,0,0,0"
Background="#DC000C"
CornerRadius="3"
DockPanel.Dock="right">
<TextBlock Style="{StaticResource textblockErrorTooltip}" DockPanel.Dock="Top"
Text="{Binding ElementName=customAdorner, Path=AdornedElement.(Validation.Errors)[0].ErrorContent}" />
</Border>
<AdornedElementPlaceholder Name="customAdorner">
<Border BorderBrush="#DC000C" BorderThickness="1.3" />
</AdornedElementPlaceholder>
</DockPanel>
</ControlTemplate>
<TextBlock FontSize="20" Text="UserName" Name="txtuserName" HorizontalAlignment="Left" VerticalAlignment="Top" Height="30" Width="163" Canvas.Left="426" Canvas.Top="172"/>
<TextBox MaxLength="10" Name="txtUserName" Validation.ErrorTemplate="{StaticResource validationErrorTemplate}" Text="{Binding MemberModelObj.MemberName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True, NotifyOnValidationError=True}" FontSize="18" Style="{StaticResource textblockErrorTooltip}" GotFocus="TextUserName_GotFocus" Background="Transparent" BorderThickness="0" HorizontalAlignment="Left" VerticalAlignment="Center" Height="24" Width="370" ></TextBox>
<TextBlock FontSize="20" Text="FullName" HorizontalAlignment="Left" VerticalAlignment="Top" Height="30" Width="102" Canvas.Left="426" Canvas.Top="241" RenderTransformOrigin="-1.275,0.967"/>
<TextBox FontSize="18" Validation.ErrorTemplate="{StaticResource validationErrorTemplate}" GotFocus="TextFull_GotFocus" Background="Transparent" BorderThickness="0" Text="{Binding MemberModelObj.MemberFullName,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True, NotifyOnValidationError=True}" HorizontalAlignment="Left" VerticalAlignment="Center" Height="24" Width="367" Name="txtFirstName" />
我在Model Class中使用IDataErrorInfo
接口。
型号:
public string this[string columnName]
{
set { columnName = value; }
get
{
switch (columnName)
{
case "MemberName":
if (String.IsNullOrEmpty(MemberName))
{
result = "! Please Enter a User Name";
}
else if (MemberName.Length >= 30)
{
result = "! Name can not be longer than 30 characters.";
}
break;
}
return result;
}
}
仅在按钮点击之前验证。但是我在按钮命令或点击事件之后将其除外。
答案 0 :(得分:1)
您可以将需要验证的属性设置为默认值,例如AddNewMember()
方法中的空字符串。这将触发验证。或者在对象上创建一个实现Validate()
接口的公共IDataErrorInfo
方法,该方法将验证所有内容。因此,当您创建新成员时,请在构造之后调用Validate()
方法。