WPF错误:“在使用ItemsSource之前,项目集合必须为空。”

时间:2009-07-06 16:32:29

标签: wpf list itemscontrol

有没有人知道为什么我一直得到“在使用ItemsSource之前,Items集合必须为空”-Error?

以下是代码:

        <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>

这就是我在Code-Behind中所做的事情:

 CustomerList.ItemsSource = _mainViewModel.CustomerCollection;

请注意,CustomerCollection只是一个简单的列表<Customers&gt;。

感谢您的帮助!

干杯

4 个答案:

答案 0 :(得分:14)

这段代码是逐字复制的吗?你真的在>>行的末尾有两个直角括号(<ItemsControl...)吗?如果是这样,则可能会将第二个右尖括号视为文本内容,并将其添加到Items集合中。

答案 1 :(得分:2)

首先,从ItemsControl中删除ItemsSource =“{Binding}”。这应该可以解决你的错误。

其次,在这种情况下,我不确定您的WrapPanel是否会按预期工作。根据我的理解,当WrapPanel有多个扩展超出范围的子节点时,它将进行包装。在这种情况下,您的WrapPanel只有一个子项,一个ItemsControl。

答案 2 :(得分:2)

显然你正在使用MVVM模式。在这种情况下,您不应该明确地将一个集合分配给ItemsSource属性......相反,您应该将ViewModel分配给DataContext的{​​{1}}(或Window )。如果您的UserControlDataContext,则您的绑定应为:

_mainViewModel

答案 3 :(得分:1)

使用DataGrid.Items.Clear(); 我希望它会有所帮助...