我有一个完全使用可观察集合设置的 ViewModel,并且能够在我的界面中向下钻取到指定的时间表,并希望显示一周中的每一天,并且每天我希望能够显示 96 个不同的时间段(15 分钟增量24 小时)。下面是 ViewModel 代码以及 View 代码。
我的问题是使用用户控件的最佳方式是什么。我希望每天都有一个用户控件,因此每个计划我将有 7 个相同类型的控件,但我需要某种方式将我的数据绑定数据放入用户控件中。我需要制作自定义依赖属性并传入所有 96 个变量吗?
如果我在控件内这样做一次,我是否会硬编码出一个 96 列和三行的网格并将每个数据块输入到相应的矩形中?
我的目标是有一个可调整大小的时间表控件,其中包含星期几作为文本,底部的小时数和每 15 分钟的颜色表示。例如,每个段可以是红色、蓝色或绿色。在使用网格和矩形之前,它会使用很好的窗口重新调整大小。有没有更好的方法在屏幕上绘制形状?帆布?
谢谢,韦斯利
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>();
for (byte i = 0; i < 8; i++)
{
ObservableCollection<int> values = new ObservableCollection<int>();
for (byte j = 0; j < 96; j++)
values.Add(3);
days.Add(new Day() { data = values });
}
}
}
public class Day : BaseVM
{
private ObservableCollection<int> _data;
public ObservableCollection<int> data
{
get
{
return _data;
}
set
{
_data = value;
OnPropertyChanged("data");
}
}
}
以下是我当前的 XAML
<ItemsControl Name="schedule">
<ItemsControl.Resources>
<converters:OnOffColorConverter x:Key="colorConverter"/>
</ItemsControl.Resources>
<ItemsControl.ItemTemplate>
<DataTemplate>
<controls:Day data="{Binding}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>