監視可能なコレクションを使用して完全に設定された ViewModel があり、インターフェイスで指定されたスケジュールにドリルダウンすることができ、曜日ごとに表示したいと考えています。 24 時間)。以下は、ViewModel コードと View コードです。
私の質問は、ユーザー コントロールを使用する最善の方法は何かということです。毎日ユーザー コントロールが必要なので、スケジュールごとに同じ種類のコントロールを 7 つ用意しますが、何らかの方法でデータ バインド データをユーザー コントロールに取り込む必要があります。カスタムの依存関係プロパティを作成し、96 個の変数すべてを渡す必要がありますか?
コントロール内でこれを行う場合、96 列と 3 行のグリッドをハード コードし、各データ片を対応する四角形に入力しますか?
私の目標は、曜日がテキストとして表示され、下部に時間が表示され、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>