我目前有一个GridView,其中ItemsSource与ObservableCollection绑定。
它显示了我想要的项目,但我想在结尾处手动添加一个看起来和行为不同的项目。有没有办法可以在不修改ItemsSource绑定的ObservableCollection的情况下完成它?
答案 0 :(得分:0)
有两种方法:
使用MVVM,原始集合将从模型层中提取,附加项目将添加到视图模型中。它可以正常工作,因为您可以考虑视图所需的其他项目 ,例如例如,您需要添加“以上全部”的投票选项列表。
绑定IValueConverter
时,将两个集合分开,然后使用ItemsSource
将它们连接/连接在一起。这种方法更加棘手,只有当您需要将两个集合分开并组合时才会非常有用,例如:一个集合中的项目列表和另一个集合中的项目类别列表,但也已合并。
我已经在广泛使用的WPF应用程序中成功使用了这两种方法。如果您想了解MVVM的更多细节或选项#2的转换器示例,请告诉我。
编辑:阅读问题的评论,如果您确实想要使用选择器DataTemplateSelector
和/或您想要实现的其他项目的不同视觉或行为ItemContainerStyleSelector
。我最近使用了选项#2和模板选择的组合成功。
希望这有帮助!
答案 1 :(得分:0)
一些选项:
使用CompositeCollection,您可以定义这是xaml。不确定它是否能解决问题,你可能需要稍微解决一下
在幕后创建一个新的集合,其中包含集合中的项目+额外项目。
编写转换器,而不是创建新集合(或返回IEnumerable),并添加新项目。
我猜所有这些选项都有一个共同的主题,因为它们都是一个新的集合。你基本上不能直接绑定到原始集合,因为它没有额外的项目,所以你必须以某种形式绑定到其他东西。