在将更改通知 View 之前,我不知道如何更新多个属性。 我得到了一个 ViewModel,其 Start 为 DateTime,StartTime 为 TimeSpan,End 为 DateTime,EndTime 为 TimeSpan。 当我设置 StartTime 时,我想相应地更新 End 和 EndTime。 因此,如果我将 StartTime 设置为晚于 EndTime 的时间,我希望将 EndTime 更新为 StartTime + 30 分钟。我曾经使用 WPF,在那里我能够更新 ViewModel 中的所有私有(private)属性,然后调用 PropertyChange 事件,但是对于这个 Prism,我不知道如何做到这一点。看来我只能使用 SetProperty 方法调用 PropertyChanged 事件。我已经做了一个我认为我需要做的事情的小例子..
DateTime? _start = DateTime.Now;
TimeSpan? _startTime = DateTime.Now.TimeOfDay;
DateTime? _end = DateTime.Now;
TimeSpan? _endTime = DateTime.Now.TimeOfDay;
public TimeSpan? StartTime
{
var val = value;
_end = new TimeSpan(val.Hours, val.Minutes + 30, 0);
SetPropertyChanged(ref _startTime, val);
}
最佳答案
你可以这样做:
private int _myFieldA;
private int _myFieldB;
public int MyPropertyA
{
get { return _myFieldA; }
set
{
_myFieldA = value;
_myFieldB = value + 10;
OnPropertyChanged( () => MyPropertyA );
OnPropertyChanged( () => MyPropertyB );
}
}
public int MyPropertyB
{
get { return _myFieldB; }
set
{
_myFieldA = value - 10;
_myFieldB = value;
OnPropertyChanged( () => MyPropertyA );
OnPropertyChanged( () => MyPropertyB );
}
}
虽然那些 PropertyChanged
事件总是一个接一个地触发,但是当一个事件被触发时,数据总是一致的。
关于c# - 更新单个属性集的多个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40086074/