问题:
我的GUI上有2个DateTime对象(开始日期和结束日期)。如果开始日期大于结束日期,我已经实现了 IDateErrorInfo 以显示错误,反之亦然
如果我随后选择的结束日期比开始日期短,那么该框中将显示错误。此时,两个日期都显示错误。
如果我随后通过将开始日期设置为小于结束日期来进行纠正,则错误将从开始日期中删除,但是结束日期仍然显示错误(直到我手动单击并更改以将其删除)。
如果将开始日期修改为小于结束日期,如何消除结束日期的错误?
[为说明添加修改内容
public class MainWindowModel : INotifyPropertyChanged, IDataErrorInfo
{
....
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
....
public string this[string columnName]
{
get
{
string result = null;
if (columnName == nameof (StartDate))
{
result = _contentFactory.ValidateDateTimes(StartDate.Ticks, EndDate.Ticks);
// Need to clear error on end date.
if (result == null)
{
// How to get control of EndDate to populate method below ???
Validation.ClearInvalid( ???? );
}
}
if (columnName == nameof(EndDate))
{
result = _contentFactory.ValidateDateTimes(StartDate.Ticks, EndDate.Ticks);
if (result == null)
{
// How to get control name of StartDate.
Validation.ClearInvalid( ???? )
}
}
return result;
}
}
}
我到目前为止所取得的成就: 我尝试使用Validation.ClearInvalid,但这需要控件名称。这在View模型类中不可用。因此,我必须从ViewModel设置一个动作(事件),然后在XAML类后面的代码中实现该动作(事件)以直接访问控件。
提到的另一种方法是下面的链接,该链接使用可视树搜索字段。 WPF Validation: Clearing all validation errors
我对这两种方法都不满意。
有没有更好的方法。
非常感谢。