2009-07-06 2 views
2

Кто-нибудь знает, почему я продолжаю получать «Коллекция предметов должна быть пустой перед использованием ItemsSource» -Error?Ошибка WPF: «Коллекция элементов должна быть пуста перед использованием ItemsSource."

Вот код:

 <ScrollViewer Margin="8,8,8,8" Grid.Row="3" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled">     
       <WrapPanel Orientation="Vertical"> 
        <ItemsControl ItemsSource="{Binding}" x:Name="CustomerList" >> 
         <ItemsControl.ItemsPanel> 
          <ItemsPanelTemplate> 
           <WrapPanel Orientation="Horizontal"> 
           </WrapPanel> 
          </ItemsPanelTemplate> 
         </ItemsControl.ItemsPanel> 
         <ItemsControl.ItemTemplate> 
          <DataTemplate> 
           <View:UserControlCustomerDetails> 
           </View:UserControlCustomerDetails> 
          </DataTemplate> 
         </ItemsControl.ItemTemplate> 
        </ItemsControl> 
       </WrapPanel> 
      </ScrollViewer> 

Это то, что я в моем фоновом коде:

CustomerList.ItemsSource = _mainViewModel.CustomerCollection; 

Обратите внимание, что CustomerCollection является только простым списком <Customers>.

Благодарим за помощь!

Приветствия

ответ

14

Является ли этот код копируется? У вас действительно есть два прямоугольных скобки (>>) в конце линии <ItemsControl...? Если это так, вторая прямоугольная скобка может обрабатываться как текстовое содержимое, которое добавляется в коллекцию Items.

+5

Отличный .. он работает сейчас! Большое спасибо, иногда мне жаль, что я не мог себя наброситься :-) –

+1

@ Josephjun.Melettukunnel Вы можете, lol. –

2

Во-первых, удалить ItemsSource = "{Binding}" из вашего ItemsControl. Это должно исправить вашу ошибку, я считаю.

Во-вторых, я не уверен, что ваш WrapPanel будет работать как ожидалось в этом случае. По моему мнению, WrapPanel сделает обертку, когда у нее несколько дочерних элементов, которые выходят за рамки. В этом случае ваш WrapPanel имеет только 1 ребенка, элемент ItemsControl.

2

Видимо, вы используете шаблон MVVM. В этом случае вам не следует явно назначать коллекцию для свойства ItemsSource ... вместо этого вы должны назначить ViewModel DataContextWindow (или UserControl). Если ваш DataContext является _mainViewModel, ваше связывание должно быть:

<ItemsControl ItemsSource="{Binding CustomerCollection}" ... 
+0

Спасибо за подсказку, я исправлю это. –

1

DataGrid.Items.Clear(); Использование Я надеюсь, что это будет полезно ...

Смежные вопросы