我有以下 ViewModel 并在我的代码中将其链接到项目控件。但是,当我使用以下行时:
onOffSchedule.dc.schedules[0].days[0].data[0] = 9;
它有时只更新用户界面??当它这样做时,它会更新所有错误的数据。而不是将第一个计划、第一天和第一个时间段分配给 9。它会更新第一个时间段的第一个计划(对于所有天??)。
所以我想弄清楚为什么它会更新 days 数组中的每个索引,而不仅仅是第一个。
提前致谢!
public class ScheduleVM
{
public ObservableCollection<Schedule> schedules { get; set; }
private static ScheduleVM viewModel = null;
public static ScheduleVM getInstance()
{
if (viewModel == null)
viewModel = new ScheduleVM();
return viewModel;
}
private ScheduleVM()
{
schedules = new ObservableCollection<Schedule>();
for (byte i = 0; i < 32; i++)
schedules.Add(new Schedule());
}
}
public class Schedule
{
public ObservableCollection<Day> days { get; set; }
public Schedule()
{
days = new ObservableCollection<Day>();
int[] values = new int[96];
for (byte i = 0; i < 96; i++)
values[i] = 3;
for (byte i = 0; i < 8; i++)
days.Add(new Day() { data = values });
}
}
public class Day : BaseVM
{
private int[] _data;
public int[] data
{
get
{
return _data;
}
set
{
_data = value;
OnPropertyChanged("data");
}
}
}
下面是与此代码一起使用的视图。这是我在另一个窗口内创建的用户控件(在该窗口内,用户控件称为“onOffSchedule”。
public ScheduleVM dc { get; private set; }
public Schedule()
{
InitializeComponent();
dc = ScheduleVM.getInstance();
this.DataContext = dc;
schedule.ItemsSource = dc.schedules[0].days;
}