Wpf IDataErrorInfo由实体类实现
我有实体类:Wpf IDataErrorInfo由实体类实现,wpf,mvvm,caliburn.micro,castle-dynamicproxy,Wpf,Mvvm,Caliburn.micro,Castle Dynamicproxy,我有实体类: 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 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实现时才起作用。是否有任何简单的方法可以在实体对象而不是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讨论中也提出了这个问题:如果您使用
绑定
来绑定文本,那么设置绑定的validatesOnDaerRors=True
属性。希望这会有所帮助
<TextBox Grid.Row="0" Grid.Column="1" x:Name="Project_Name" Margin="4"
Text="{Binding Project.Name, ValidatesOnDataErrors=True}" />
如果使用
绑定
绑定文本,请设置绑定的validatesOnDaerRors=True
属性。希望这会有所帮助
<TextBox Grid.Row="0" Grid.Column="1" x:Name="Project_Name" Margin="4"
Text="{Binding Project.Name, ValidatesOnDataErrors=True}" />
这是可行的,但我想找到其他方法。我发现,当我强制ConventionManager.ApplyValidation为我的项目类型设置binding.validateSondaerRors=true时,它就可以工作了。所以看起来我必须修改这个约定。这是可行的,但我想找到其他的方法。我发现,当我强制ConventionManager.ApplyValidation为我的项目类型设置binding.validateSondaerRors=true时,它就可以工作了。看来我必须修改这个惯例。