Validation Silverlight对相关控件的验证?
我有Silverlight 3应用程序,其中有两个日期选择器用于开始日期和结束日期。 它们是绑定到实现验证逻辑的业务对象的数据,因此StartDate必须在EndDate之前,EndDate必须在StartDate之后 到目前为止,一切正常-当在各自的setter中引发验证异常时,这两个控件都会显示相应的验证错误 我的问题是,如果用户更改“other”控件,使得第一个控件中的“invalid”日期现在有效,那么第一个控件的状态不会更改(因为尚未调用其setter) 例如,如果我将StartDate设置为2009年12月15日,将EndDate设置为2009年12月10日,EndDate控件将正确进入无效状态。如果用户将StartDate更改为2009年12月9日,则EndDate控件仍然标记为无效,因为UI尚未调用EndDate setterValidation Silverlight对相关控件的验证?,validation,silverlight-3.0,Validation,Silverlight 3.0,我有Silverlight 3应用程序,其中有两个日期选择器用于开始日期和结束日期。 它们是绑定到实现验证逻辑的业务对象的数据,因此StartDate必须在EndDate之前,EndDate必须在StartDate之后 到目前为止,一切正常-当在各自的setter中引发验证异常时,这两个控件都会显示相应的验证错误 我的问题是,如果用户更改“other”控件,使得第一个控件中的“invalid”日期现在有效,那么第一个控件的状态不会更改(因为尚未调用其setter) 例如,如果我将StartDat
是否有一种“干净”的MVVM风格的方法来强制UI重新验证?使用 基本上,它允许您对一些控件进行分组,并在触发某个命令时验证该组,这对于标准的东西来说非常有效 Xaml用于一些文本框
按照ValidationScope类的链接进行操作。从中使用ValidationScope类 基本上,它允许您对一些控件进行分组,并在触发某个命令时验证该组,这对于标准的东西来说非常有效 Xaml用于一些文本框 遵循ValidationScope类的链接
<StackPanel local:ValidationScope.ValidationScope="{Binding PersonValidationScope}">
<TextBox
Text="{Binding Person.Name, Mode=TwoWay, ValidatesOnExceptions=True, NotifyOnValidationError=True}"
local:ValidationScope.ValidateBoundProperty="Text" />
<TextBox
Text="{Binding Person.Age, Mode=TwoWay, ValidatesOnExceptions=True, NotifyOnValidationError=True}"
local:ValidationScope.ValidateBoundProperty="Text" />
<ComboBox
ItemsSource="{Binding Salutations}"
SelectedItem="{Binding Person.Salutation, Mode=TwoWay, NotifyOnValidationError=True, ValidatesOnExceptions=True}"
local:ValidationScope.ValidateBoundProperty="SelectedItem" />
<Button Content="Save" Click="SaveButtonClick" />
</StackPanel>
public void Save()
{
// This causes all registered bindings to be updated
PersonValidationScope.ValidateScope();
if (PersonValidationScope.IsValid())
{
// Save changes!
}
}