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