创建以下内容:
水平列表视图:
<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));
}
}
}
更多详情请关注implementing property change notification see here
包含 MyClock 实例列表的 ObservableCollection:
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 });
您的 ListView 的 ItemsSource 已设置为标记中的 ObservableCollection(见上文)
希望您已经设置了 DataContext。
现在,每当用户单击 ToggleButton 时,值 True/False/Null 都会传播到您的属性,反之亦然。