我有一个非常简单的wpf表单,其中包含一个绑定到CSLA业务对象(版本4.5.7)的文本框。我正在分配属性 AText 一个 String.Empty 。
首次加载窗口时,应该激活错误提供程序,因为它是必填字段。但是当我开始键入第一个字符时它被激活,因为我将最小字符属性字段设置为5个字符。当我从框中删除所有字符时,错误提供程序保持不变。
为什么在加载窗口时没有激活错误提供程序?
谢谢
<Grid>
<TextBox Height="50" Width="300" Text="{Binding AText, Mode=TwoWay, NotifyOnTargetUpdated=True, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True, ValidatesOnExceptions=True}" />
</Grid>
namespace TestNameSpace
{
[Serializable()]
public class CSLAClass : BusinessBase<CSLAClass>
{
public CSLAClass()
{
AText = String.Empty;
}
public static PropertyInfo<string> ATextProperty = RegisterProperty<string>(p => p.AText);
[Required, MinLength(5,ErrorMessage ="The Minimum is 5"), MaxLength(10)]
public string AText
{
get { return GetProperty(ATextProperty); }
set { SetProperty(ATextProperty, value); }
}
}
}
答案 0 :(得分:0)
您是否在从DataPortal_Create / DataPortal_Fetch返回之前调用BusinessRules.CheckRules?规则不会自动运行,因此对象将从有效开始。