C# 相互依存属性的模式
我的ViewModel中有一个属性会影响另一个属性,例如SelectedDate和ReferenceDate 每当SelectedDate更改时,ReferenceDate会自动设置为低于SelectedDate的值,这当然需要在ui中更新这两个值。例如:C# 相互依存属性的模式,c#,wpf,C#,Wpf,我的ViewModel中有一个属性会影响另一个属性,例如SelectedDate和ReferenceDate 每当SelectedDate更改时,ReferenceDate会自动设置为低于SelectedDate的值,这当然需要在ui中更新这两个值。例如: public SelectedDate { set { _selectedDate = value; _referentialDate = value.AddDays(-1);
public SelectedDate
{
set
{
_selectedDate = value;
_referentialDate = value.AddDays(-1);
RaisePropertyChanged("SelectedDate");
RaisePropertyChanged("ReferentialDate");
}
}
这个更新是通过属性更改机制处理的,该机制还负责加载相关数据。同样的情况也只适用于参考日期:
public ReferentialDate
{
set
{
_referentialDate = value;
RaisePropertyChanged("ReferentialDate");
}
}
不幸的是,这种实现导致在SelectedDate更改时调用ReferentialDate两次。是否有一些模式或解决方案可以防止多次调用ReferentialDate?这应该可以解决问题:
public SelectedDate
{
set
{
_selectedDate = value;
ReferentialDate = value.AddDays(-1);
RaisePropertyChanged("SelectedDate");
}
}
如果ReferentialDate总是在SelectedDate之前1天,那么您可以去掉_ReferentialDate,并生成一个ReferentialDate getter,从SelectedDate计算值。您还应该能够独立地选择ReferentialDate。因此,并非总是在SelectedDate前1天。SelectedDate和ReferentialDate之间的关系不清楚-请您解释一下好吗?例如,如果SelectedDate在过去或将来更改了3天,ReferentialDate是否应该更改3天以保持两个日期之间的差异?现在,您的代码没有这样做。如果SelectedDate更改了3天,则ReferentialDate更改了4天。如果ReferentialDate本身发生了更改,则不会触动SelectedDate。然后,我会根据两个属性将ReferentialDate设置为一个计算值,这两个属性是:SelectedDate和SelectedDate与ReferentialDate之间的间隔。修改所选日期时,无需修改其他属性。调用方修改参考日期时,将存储新的日期间隔,这将更改参考日期的计算。未存储引用日期-它是在ReferentialDate getter中计算的。