Некоторое время назад я написал небольшое виджет-приложение, которое должно было отслеживать задачи, каждая задача имела конечный срок, указанный как DateTime
, теперь, если вы хотите отобразить, сколько времени осталось до крайнего срока, вы может привязываться к "виртуальному" (* проклинает свойство virtual
keyword *) следующим образом:
public TimeSpan TimeLeft
{
get { return Deadline - DateTime.Now; }
}
Очевидно, что теоретически это свойство меняет каждый тик, и вы хотите время от времени обновлять свой интерфейс (например, периодически выкачивая событие PropertyChanged
для этого свойства).
Назад, когда я написал виджет, каждую минуту обновлял весь список задач, но это вряд ли идеально, поскольку, если пользователь взаимодействует с каким-либо элементом (например, введя TextBox, который привязан к Comments
-property), который будет быть жестко перепутаны и обновления источника теряются.
Итак, что может быть лучшим подходом к обновлению пользовательского интерфейса, если у вас есть такие зависящие от времени свойства?
(Я не использую это приложение, кстати, просто подумал, что это очень интересный вопрос)