Привязка не работает Проверенный список BoX - PullRequest
1 голос
/ 20 февраля 2011

Привет Я установил флажок «Список» в 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;
}

Ответы [ 2 ]

1 голос
/ 20 февраля 2011

Вы создаете экземпляр CheckedListItem item = new CheckedListItem(); вне цикла for и инициализируете только один экземпляр CheckedListItem, который вы редактируете 10 раз.Остается только последнее редактирование.

Вы также добавили этот самый экземпляр в 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);
  }
0 голосов
/ 20 февраля 2011

Вы создаете только один CheckedListItem, а затем выполняете каждый из i, меняя тот единственный CheckedListItem, который вам необходим для циклического перемещения по CheckedListItems в Списке, применяя соответствующий i к каждому.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...