2

有谁知道为什么我不断收到“使用 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 只是一个简单的 List <Customers>。

谢谢你的帮助!

干杯

4

4 回答 4

14

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

于 2009-07-06T17:34:42.560 回答
2

首先,从您的 ItemsControl 中删除 ItemsSource="{Binding}"。我相信这应该可以解决您的错误。

其次,我不确定您的 WrapPanel 在这种情况下是否能按预期工作。据我了解,当 WrapPanel 有多个超出范围的孩子时,它会进行包装。在这种情况下,您的 WrapPanel 只有 1 个子项,即 ItemsControl。

于 2009-07-06T16:41:53.323 回答
2

显然您正在使用 MVVM 模式。在这种情况下,您不应该将集合显式分配给ItemsSource属性......相反,您应该将 ViewModel 分配给DataContextWindowUserControl)。如果你DataContext_mainViewModel,你的绑定应该是:

<ItemsControl ItemsSource="{Binding CustomerCollection}" ...
于 2009-07-06T16:54:32.580 回答
1

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

于 2013-03-23T10:33:44.250 回答