Создайте следующее:
Горизонтальный ListView:
<ListView ItemsSource="{Binding myClocks}">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemTemplate>
<DataTemplate>
<ToggleButton />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Класс, содержащий два члена Time
и IsChecked
:
Class MyClock : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
string time;
Nullable<bool> isChecked;
public string Time
{
get { return time };
set
{
time = value;
OnPropertyChanged("Time");
}
};
// Similarly create property for isChecked
protected void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
}
Подробнее о реализации уведомления об изменении свойства см. Здесь
ObservableCollection, содержащая список экземпляров MyClock:
ObservableCollection<MyClock> myClocks = new ObservableCollection<MyClock>();
Добавьте 24 предмета в коллекцию:
for(int i=0; i<24; i++)
myClocks.Add(new MyClock{ Time = String.Format("00:{0}",i.ToString("D2"}), IsChecked = false });
ItemsSource вашего ListView уже установлен на ObservableCollection в разметке (см. Выше)
Надеюсь, вы уже установили DataContext.
Теперь, когда пользователь нажимает кнопку ToggleButton, значение True / False / Null будет распространяться на ваше свойство и наоборот.