您好 我已经在WPF中检查了列表框但是绑定无法正常工作。我检查了列表我创建它包含正确格式的数据但是当我用列表框绑定它时它不起作用
仅最后一个条目出现在列表框
中的项目时间数选中框列表XML
<ListBox x:Name="list" Margin="18,100,535,74">
<ListBox.ItemTemplate>
<HierarchicalDataTemplate>
<my:RibbonCheckBox Label="{Binding Name}" IsChecked="{Binding IsChecked}" />
</HierarchicalDataTemplate>
</ListBox.ItemTemplate>
</ListBox>
类用于数据保存
public class CheckedListItem
{
public int Id { get; set; }
public string Name { get; set; }
public bool IsChecked { get; set; }
}
填充列表框的按钮
private void button1_Click(object sender, RoutedEventArgs e)
{
List<CheckedListItem> AvailablePresentationObjects = new List<CheckedListItem>();
CheckedListItem item = new CheckedListItem();
for (int i = 0; i < 10; i++)
{
item.Id = i;
item.Name = i.ToString();
item.IsChecked = false;
AvailablePresentationObjects.Add(item);
}
list.ItemsSource = AvailablePresentationObjects;
}
答案 0 :(得分:1)
您在for循环之外实例化CheckedListItem item = new CheckedListItem();
,并且只初始化您编辑10次的CheckedListItem
个实例。只剩下最后一次编辑。
您还将此同一个实例添加了10次到AvailablePresentationObjects
。
尝试以下方法:
for (int i = 0; i < 10; i++)
{
CheckedListItem item = new CheckedListItem();
item.Id = i;
item.Name = i.ToString();
item.IsChecked = false;
AvailablePresentationObjects.Add(item);
}
答案 1 :(得分:0)
你只是创建一个CheckedListItem,然后运行每个i改变那个单独的CheckedListItem,你需要循环遍历List中的CheckedListItems,将相关的i应用到每个。