Коллекция элементов должна быть пустой перед использованием ошибки

Я использую набор инструментов, который предоставляет элемент управления MultiSelectionList в wp7, и пытаюсь связать имена с multiselectItem, используя свойство ItemsSource в C#.

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
   <StackPanel>
      <TextBlock Text="Please select the satellites from the list:-" />
      <toolkit:MultiselectList Name="multiSelectionList">
          <toolkit:MultiselectItem Content="{Binding Name}" />
      </toolkit:MultiselectList>
   </StackPanel>
 </Grid>

Но я получил эту ошибку.

Items collection must be empty before using ItemsSource.

Я протестировал сервис в других частях приложения, и он работает без проблем.

Пожалуйста, сообщите мне. Спасибо,


person darking050    schedule 11.01.2012    source источник
comment
где вы устанавливаете свой «MultiselectList» «ItemsSource», и если вы устанавливаете его в коде, у вас должен быть пустой список, но в приведенном выше примере вы добавляете в список один элемент. Я думаю, вы пытались добавить шаблон данных в MultiselectList, а не элемент, или я ошибаюсь?   -  person BigL    schedule 12.01.2012


Ответы (1)


Вы добавляете элемент в MultiSelectList, когда делаете:

<toolkit:MultiselectItem Content="{Binding Name}" />

К тому времени, когда вы назначаете ItemsSource, что, как я предполагаю, вы делаете где-то в коде программной части, в списке уже есть элемент (тот, что выше). Вот почему вылетает ошибка. Вы можете вручную очистить список перед установкой источника, но это не обязательно считается хорошей практикой. Вместо этого вы могли бы создать DataTemplate, а не фактический экземпляр MultiSelectItem. Я не знаком с этим элементом управления, но попробуйте:

<toolkit:MultiselectList Name="multiSelectionList">
  <toolkit:MultiSelectList.ItemTemplate>
     <DataTemplate>
         <toolkit:MultiselectItem Content="{Binding Name}" />
     </DataTemplate>
  </toolkit:MultiSelectList.ItemTemplate>
</toolkit:MultiselectList>
person keyboardP    schedule 11.01.2012
comment
Отличный ответ и очень быстро забыть только одну вещь в XAML. :) ‹toolkit:MultiselectList.ItemTemplate› ‹DataTemplate› ‹/DataTemplate› ‹/toolkit:MultiselectList.ItemTemplate› - person BigL; 12.01.2012
comment
Я думаю, что отредактировал его как раз перед тем, как вы разместили комментарий :) (Если я что-то не упустил...?) - person keyboardP; 12.01.2012
comment
Извините, может быть, вы этого не сделали, это тоже могло работать, просто это было немного необычно для меня, я всегда использовал синтаксис, который я добавил здесь в качестве комментария. :) - person BigL; 12.01.2012
comment
Я заметил, что вы некоторое время назад отвечаете очень быстро и очень хорошо, и большую часть времени вы быстрее меня. :) А мы все ошибаемся мы не машины или мы? :D - person BigL; 12.01.2012
comment
Я занимаюсь разработкой WP7 в течение некоторого времени, поэтому многие проблемы связаны с тем, с чем я сталкивался и не мог решить в течение нескольких дней. Нравится пытаться помочь, чтобы люди тоже не тратили на них целую вечность :) - person keyboardP; 12.01.2012
comment
Я тоже так думаю, только у меня не так много опыта, как у вас. И сейчас я занимаюсь разработкой WP7 для удовольствия, я уверен, что заниматься этим тоже весело. :) - person BigL; 12.01.2012