У меня есть класс сущности:
public class Project
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual string Description { get; set; }
}
этот класс реализует интерфейсы IDataErrorInfo и INotifyPropertyChanged через перехватчик Castle DynamicProxy. У меня есть экземпляр этого класса в виде модели:
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: http://caliburnmicro.codeplex.com/discussions/338196