如何在绑定ItemsSource后手动将项添加到GridView.Items?

时间:2012-09-11 23:08:42

标签: c# wpf data-binding windows-8 .net-4.5

我目前有一个GridView,其中ItemsSource与ObservableCollection绑定。

它显示了我想要的项目,但我想在结尾处手动添加一个看起来和行为不同的项目。有没有办法可以在不修改ItemsSource绑定的ObservableCollection的情况下完成它?

2 个答案:

答案 0 :(得分:0)

有两种方法:

  1. 使用MVVM,原始集合将从模型层中提取,附加项目将添加到视图模型中。它可以正常工作,因为您可以考虑视图所需的其他项目 ,例如例如,您需要添加“以上全部”的投票选项列表。

  2. 绑定IValueConverter时,将两个集合分开,然后使用ItemsSource将它们连接/连接在一起。这种方法更加棘手,只有当您需要将两个集合分开并组合时才会非常有用,例如:一个集合中的项目列表和另一个集合中的项目类别列表,但也已合并。

  3. 我已经在广泛使用的WPF应用程序中成功使用了这两种方法。如果您想了解MVVM的更多细节或选项#2的转换器示例,请告诉我。

    编辑:阅读问题的评论,如果您确实想要使用选择器DataTemplateSelector和/或您想要实现的其他项目的不同视觉或行为ItemContainerStyleSelector。我最近使用了选项#2和模板选择的组合成功。

    希望这有帮助!

答案 1 :(得分:0)

一些选项:

使用CompositeCollection,您可以定义这是xaml。不确定它是否能解决问题,你可能需要稍微解决一下

在幕后创建一个新的集合,其中包含集合中的项目+额外项目。

编写转换器,而不是创建新集合(或返回IEnumerable),并添加新项目。

我猜所有这些选项都有一个共同的主题,因为它们都是一个新的集合。你基本上不能直接绑定到原始集合,因为它没有额外的项目,所以你必须以某种形式绑定到其他东西。