1
实现我的实体类:IDataErrorInfo的通过实体类
public class Project
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual string Description { get; set; }
}
该类通过城堡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
这个工程,但我想找到一些其他方式如何做到这一点。我发现当我强制ConventionManager.ApplyValidation为我的项目类型设置binding.ValidatesOnDataErrors = true时,它就起作用了。所以看起来我必须修改这个约定。 – 2012-02-22 21:11:57