2009-07-06 424 views
2

有沒有人知道爲什麼我不斷收到「Items集合必須爲空之前使用ItemsSource」 - 錯誤?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

太棒了..它現在正在工作! 非常感謝,有時我希望我能踢自己:-) – 2009-07-07 06:49:34

2

首先,刪除的ItemsSource =從你的ItemsControl 「{結合}」。這應該解決你的錯誤,我相信。其次,我不確定你的WrapPanel在這種情況下是否能按預期工作。根據我的理解,WrapPanel將在包含多個超出界限的子項時進行包裝。在這種情況下,你的WrapPanel只有一個子控件ItemsControl。

2

顯然你使用的是MVVM模式。在這種情況下,您不應該明確地將集合分配給ItemsSource屬性......相反,您應該將一個ViewModel分配給Window(或UserControl)的DataContext。如果您DataContext_mainViewModel,你的綁定應該是:

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

謝謝你的提示,我會改正這一點。 – 2009-07-07 06:50:42

1

使用DataGrid.Items.Clear(); 我希望這將是有益的......

相關問題