有没有人知道为什么我一直得到“在使用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;。
感谢您的帮助!
干杯
答案 0 :(得分:14)
这段代码是逐字复制的吗?你真的在>>
行的末尾有两个直角括号(<ItemsControl...
)吗?如果是这样,则可能会将第二个右尖括号视为文本内容,并将其添加到Items集合中。
答案 1 :(得分:2)
首先,从ItemsControl中删除ItemsSource =“{Binding}”。这应该可以解决你的错误。
其次,在这种情况下,我不确定您的WrapPanel是否会按预期工作。根据我的理解,当WrapPanel有多个扩展超出范围的子节点时,它将进行包装。在这种情况下,您的WrapPanel只有一个子项,一个ItemsControl。
答案 2 :(得分:2)
显然你正在使用MVVM模式。在这种情况下,您不应该明确地将一个集合分配给ItemsSource
属性......相反,您应该将ViewModel分配给DataContext
的{{1}}(或Window
)。如果您的UserControl
为DataContext
,则您的绑定应为:
_mainViewModel
答案 3 :(得分:1)
使用DataGrid.Items.Clear();
我希望它会有所帮助...