【发布时间】:2009-08-06 10:36:24
【问题描述】:
在 Silverlight 3 中,我正在使用 MVVM 以及验证原则,即如果发生验证错误,setter 会导致异常。我在使用 TwoWay 的字段上使用绑定语法,即:
<TextBox x:Name="TextBoxClientName" Text="{Binding Name,Mode=TwoWay,ValidatesOnExceptions=True,NotifyOnValidationError=true}" Grid.Column="1" Grid.Row="0" Margin="5 5 5 5" />
我使用注释在 ViewModel 中验证此属性:
[Required(ErrorMessage = "Name is required")]
public string Name
{
get
{
return _client.Name;
}
set
{
Validator.ValidateProperty(value, new ValidationContext(this, null, null) { MemberName = "Name", DisplayName="Client Name" });
_client.Name = value;
}
}
我有验证摘要,一切正常,但是大声笑,我正在寻找的功能如下:
您有数据表单,我希望验证摘要仅在我单击保存时显示在顶部,此外,我希望在该 ValidationSummary 上实现一个关闭按钮,以便用户可以继续输入和更正。
我不确定如何使用验证摘要控制可见性或切换,我已经尝试了可见性。以下是我尝试过的代码,它确实收集了提交时的错误,但我无法将它们应用于验证摘要:
public void Save()
{
List<ValidationError> errors = new List<ValidationError>();
foreach (UIElement ui in LayoutRoot.Children)
{
FrameworkElement fe = ui as FrameworkElement;
if (fe != null)
{
foreach (ValidationError ve in Validation.GetErrors(fe))
{
errors.Add(ve);
}
}
}
if (errors.Count > 0)
{
Validation1.DataContext = errors;
Validation1.Filter = ValidationSummaryFilters.All;
}
else
{
if (Saved != null)
Saved(this, EventArgs.Empty);
}
}
干杯,
安德鲁
【问题讨论】:
标签: c# silverlight