多个 ItemsSource 集合绑定
如何将多个不同类型的集合绑定到 ItemsControl 的 ItemsSource?
使用单个绑定效果很好:
<ItemsControl ItemsSource="{Binding Foo}" />
但是当我尝试 CompositeCollection 时,来自 Foo
的项目不会显示:
<ItemsControl>
<ItemsControl.ItemsSource>
<CompositeCollection>
<CollectionContainer Collection="{Binding Foo}" />
</CompositeCollection>
</ItemsControl.ItemsSource>
</ItemsControl>
How can I binds multiple collections of different types to an ItemsSource of an ItemsControl?
Using a single binding works fine:
<ItemsControl ItemsSource="{Binding Foo}" />
But when I try a CompositeCollection, the items from Foo
aren't displayed:
<ItemsControl>
<ItemsControl.ItemsSource>
<CompositeCollection>
<CollectionContainer Collection="{Binding Foo}" />
</CompositeCollection>
</ItemsControl.ItemsSource>
</ItemsControl>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我建议将 ListBox 绑定到您在代码中构建的 CompositeCollection。
在此示例中,我使用 ViewModel,但您也可以在代码隐藏中执行相同的操作。
你可以通过google找到很多关于如何为ViewModel实现ViewModelBase和DelegateCommand的例子。
以下是此示例的细分:
这是视图:
这是视图模型:
这是模型:
I recommend binding the ListBox to a CompositeCollection that you build in code.
In this example I am using a ViewModel, but you can do the same in a code-behind as well.
You can find many examples on how to implement ViewModelBase and DelegateCommand for the ViewModel via google.
Here is the breakdown of this example:
Here is the View:
Here is the ViewModel:
Here are the models:
我相信这在这里得到了最好的回答:如何将 CollectionContainer 绑定到视图模型中的集合?
它归结为
CollectionContainer
没有DataContext
。您必须设置源,以便它可以找到DataContext
并完成绑定。I believe this was answered best here: How do you bind a CollectionContainer to a collection in a view model?
It boils down to the
CollectionContainer
not having aDataContext
. You must set the source so that it can find theDataContext
and complete the binding.