ViewModel にあるプロパティにラップされた linq エンティティがあります。
public NA_Header Na_Header
{
get
{
_na_header=Job.NA_Headers.FirstOrDefault();
return _na_header;
}
set { _na_header = value; }
}
ビューでこの Na_Header プロパティを使用して、GUI (xaml) のフィールドを更新します。
<Toolkit:DateTimePicker BorderBrush="Gray" Grid.Column="1" Grid.Row="1" Margin="5" VerticalAlignment="Top" Value="{Binding Path=Na_Header.JobStart, Mode=TwoWay, Converter={StaticResource thisNullDateConverter}, ValidatesOnDataErrors=True}" Format="Custom" FormatString="MMM dd yyyy"/>
<Toolkit:DateTimePicker BorderBrush="Gray" Grid.Column="1" Grid.Row="2" Margin="5" VerticalAlignment="Top" Value="{Binding Path=Na_Header.JobEnd, Mode=TwoWay, Converter={StaticResource thisNullDateConverter},ValidatesOnDataErrors=True}" Format="Custom" FormatString="MMM dd yyyy"/>
このオブジェクトには、Na_Header.JobStart と Na_Header.JobEnd に対して検証する 2 つのプロパティがあることに注意してください (これらは日付です)。各プロパティで ValidatesOnDataErrors を true に設定しています。
また、ViewModel には IDataError が実装されています。
public string this[string columnName]
{
get
{
if (columnName == "Na_Header")
{
if (Na_Header.JobStart > Na_Header.JobEnd)
return "Job Stat Date must be an earlier date than Job End Date";
}
return "";
}
}
public string Error
{
get { throw new NotImplementedException(); }
}
残念ながら、JobStart または JobEnd プロパティが変更された場合、DataError は発生しません。NotifyPropertyChanged は linq エンティティであるため、必要ないと思います (PropertyChanged は自動的に行われます)。
手がかりはありますか?