【发布时间】:2012-03-13 02:14:52
【问题描述】:
我有实体类:
public class Project
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual string Description { get; set; }
}
该类通过 Castle DynamicProxy 拦截器实现 IDataErrorInfo 和 INotifyPropertyChanged 接口。我在视图模型中有这个类的实例:
public class ProjectEditViewModel : Screen
{
public Project Project { get; set; }
....
}
我正在视图中显示此数据:
<TextBox Grid.Row="0" Grid.Column="1" x:Name="Project_Name" Margin="4"/>
<TextBox Grid.Row="0" Grid.Column="2" x:Name="Project_Description" Margin="4"/>
INotifyPropertyChanged 运行良好,但 IDataErrorInfo 不行。看起来 IDataErrorInfo 仅在由 viewmodel 实现时才有效。是否有任何简单的方法可以在实体对象而不是视图模型上进行此验证?
通过这种面向方面的编程进行数据验证对我来说最有意义,所以我想使用它。
如果这与我的问题有关,我将使用这种样式来显示验证错误:
<Style TargetType="{x:Type TextBox}">
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors).CurrentItem.ErrorContent}"/>
</Trigger>
</Style.Triggers>
</Style>
我对 XAML 的理解真的很差,如果我遗漏了一些明显的东西,很抱歉。
我也在 CaliburnMicro 讨论中问过这个问题:http://caliburnmicro.codeplex.com/discussions/338196
【问题讨论】:
标签: wpf mvvm caliburn.micro castle-dynamicproxy