IDataErrorInfo, реализованный классом сущностей - PullRequest
1 голос
/ 22 февраля 2012

У меня есть класс сущности:

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

1 Ответ

1 голос
/ 22 февраля 2012

Если вы используете Binding для привязки текста, тогда установите свойство ValidatesOnDataErrors=True привязки.Надеюсь, это поможет.

<TextBox Grid.Row="0" Grid.Column="1" x:Name="Project_Name" Margin="4"
         Text="{Binding Project.Name, ValidatesOnDataErrors=True}" />
...