我裹在,我在我的視圖模型的屬性LINQ的實體:驗證對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"/>
注意,我有2個屬性在這個對象中,我想驗證Na_Header.JobStart和Na_Header.JobEnd(這些是日期)。我的每個屬性的ValidatesOnDataErrors設置爲true。
另外在視圖模型我有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(); }
}
不幸的是,DataError不更改時的首次工或JobEnd性質的火災。我不認爲我需要NotifyPropertyChanged,因爲它是一個linq實體(PropertyChanged的東西是自動完成的)
任何線索?
我不需要INotifyPropertyChanged,因爲它是Linq系統的一部分,它會自動執行此操作。該屬性保存良好,它只是沒有解僱DateError的東西。我最終做了同樣的事情,就是在#2中做的,它只是爲JobStart和JobEnd創建屬性,並在這些屬性中調用「返回Na_Header.JobStart」(或Na_Header.JobEnd)。我試圖避免這樣做,因爲我需要以這種方式驗證其他事物,這意味着添加了更多的代碼,但也許這是唯一的方法。 *聳肩* –