Так StartDateTime в основном рассчитывается свойство. Она может быть определена следующим образом:
public DateTime StartDateTime
{
get
{
return StartDate.Add(StartTime.TimeOfDay);
}
}
теперь, когда время_запуск обновляется или StartDate обновляется, хочет, чтобы эти изменения будут отражены в пользовательском интерфейсе, например. Для того, чтобы вызвать, что вам нужен вызов RaisePropertyChanged(() => StartDateTime);
private DateTime _startTime;
public DateTime StartTime
{
get { return _startTime; }
set
{
_startTime = value;
RaisePropertyChanged(() => StartDateTime);
}
}
Теперь, когда время_запуск обновляется, интерфейс получит сигнал, который StartDateTime изменяется, а также.
Свойство StartDate должно также вызвать RaisePropertyChanged(() => StartDateTime);
, так как изменение в StartDate или StartTime приводит к другому значению StartDateTime.
RaisePropertyChanged
- это реализация интерфейса INotifyPropertyChanged
и определяет событие, на которое могут подписаться другие объекты. По сути, это означает, что абонент получит событие, сигнализирующее об изменении свойства, и, скорее всего, это приведет к тому, что абонент перечитает значение свойства, чтобы он мог, например, обновить интерфейс.
Другой вариант был бы это:
private DateTime _startTime;
public DateTime StartTime
{
get { return _startTime; }
set
{
_startTime = value;
StartDateTime = StartDate.Add(_startTime.TimeOfDay)
}
}
private DateTime _startDate;
public DateTime StartDate
{
get { return _startDate; }
set
{
_startDate = value;
StartDateTime = _startDate.Add(StartTime.TimeOfDay)
}
}
private DateTime _startDateTime;
public DateTime StartDateTime
{
get { return _startDateTime; }
set
{
_startDateTime = value;
RaisePropertyChanged(() => StartDateTime);
}
}
Поскольку модификации либо StartDate или StartTime установит StartDateTime, который, в свою очередь, будет вызывать RaisePropertyChanged
для себя так пользовательского интерфейса может отражать изменения, а также.
Похоже, у вас нет какого-либо «RaisePropertyChanged» во втором звонке или я ошибаюсь? –
Не уверен, правильно ли я понимаю, чего вы хотите. Вы ожидали, что RaisePropertyChanged (() => StartDateTime); на самом деле приводит к вызову setter свойства StartDateTime? Потому что это не то, что для RaisePropertyChanged. –
Кевин и Питер, вы правы. Я хочу, чтобы вызывался «StartDateTime». – hotspring