使用INotifyPropertyChanged的相互依赖的属性

时间:2016-09-21 08:11:49

标签: c# wpf

我有一个带有两个日期选择器的WPF-UI。第一个datepicker设置当前Date,第二个datepicker设置引用Date。基于在datepickers中选择的这两个日期,数据被加载到网格中,并显示它们随时间的变化。

我现在遇到的问题是选择当前日期当然应该以这样的方式影响参考日期,即当前日期在参考日期之后时,参考日期应自动设置为落后于日期一天。选定日期。 E.g:

CurrentDate   = new Datetime(2016,09,12); // Selected to be the 12th
if(ReferenceDate > CurrentDate)
    ReferenceDate = CurrentDate.AddDays(-1)

现在,只要日期发生变化,数据就会重新加载到数据网格中。在这种情况下,这意味着我必须在选择当前日期时重新​​加载数据,但我还必须在选择参考日期时重新​​加载数据。应用上面的方法会导致调用loadData方法两次难度。

propertyChanged(parameters...) {
    if(CurrentDate)
        loadData(); // Selecting the CurrentDate will load Data
    if(ReferenceDate)
        loadData(); // Automatically changing the RefDate will load the data a second time
}

(代码片段仅用于说明问题,它们不是实际代码)

我会感谢任何关于如何实现一种机制的想法,该机制只允许为整个日期选择操作提出一次通知。

1 个答案:

答案 0 :(得分:0)

选择DP优于INPC更好。 DP允许Coercion, and Validation。 但是如果你想使用INPC,你可以在CurDate的setter中更改RefDate,并从OnPropertyChanged("ReferenceDate") setter本身提升CurrentDate