为什么将集合绑定到数据网格会导致不同的集合视图?

威廉

假设我有这个:

public IList<TestObj> collection { get; set; }
    public MainWindow()
    {
        this.DataContext = this;
        collection = new ObservableCollection<TestObj>();
        InitializeComponent();
    }

 <DataGrid x:Name="grid" ItemsSource="{Binding collection}" IsSynchronizedWithCurrentItem="True">

  </DataGrid>

相当标准的WPF东西。但是当检查即时窗口时,这让我感到惊讶:(grid.Items实现了ICollectionView)

CollectionViewSource.GetDefaultView(collection) == grid.Items
false

但是当然...

CollectionViewSource.GetDefaultView(collection) == CollectionViewSource.GetDefaultView(grid.Items.SourceCollection)
true

从对象检索collectionview的那种神秘的静态方法使我感到惊讶,我认为它会这样做:检索绑定对象将要查看的collection视图,但是看来ICollectionview接口的两个不同实现者可以共存

干杯!

彼得·杜尼奥(Peter Duniho)

grid.Items实现ICollectionView

这是因为ItemsControl.Items 始终执行ICollectionView它始终是的实例ItemCollection,可以继承CollectionView,当然也可以实现ICollectionView

换句话说,默认集合ItemsControl本身实现了ICollectionView但这并不需要以任何方式成为控件使用的实际视图。实际上,如果您将其他集合绑定到ItemsSource,则可以说您将ICollectionView为该不同的集合获得不同的实现毕竟,是为自己ItemCollection实现ICollectionView的,而不是为任何其他集合实现的。ItemsSource集合是“任何其他集合”。

或者一种方式来看,ICollectionView返回的ItemsControl.ItemsItems集合本身的视图(恰好集合是它自己的视图)。另一方面,ICollectionView返回的CollectionViewSource.GetDefaultView(collection)是的视图collection,该视图必须与的视图不同Items

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将列表集合绑定到列表视图

来自分类Dev

将图像绑定到集合中的网格视图的有效方法-Windows 8 Metro

来自分类Dev

Blazor将数据绑定到集合?

来自分类Dev

将数据网格中的组合框绑定到可观察的集合

来自分类Dev

将模型类的列表/集合/IEnumerable 绑定到数据网格并选择列

来自分类Dev

将数据绑定到网格视图

来自分类Dev

MarkLogic:将数据归档到不同的集合

来自分类Dev

为什么集合视图中的数组会乘以节数?

来自分类Dev

将集合绑定到DataGridView

来自分类Dev

将数据绑定到Windows Phone中的可观察集合

来自分类Dev

为什么将Blob转换为数据URI会导致与直接数据URI方法不同的URI?

来自分类Dev

将不同的集合绑定到datagrid

来自分类Dev

如何将图像从集合视图传递到集合视图

来自分类Dev

将集合引用从视图传递到 VM 时跟踪集合引用的最佳方法是什么

来自分类Dev

将集合的集合绑定到一个画布元素

来自分类Dev

无法将模型绑定到集合

来自分类Dev

使用集合将模型绑定到对象

来自分类Dev

将属性绑定到itemssource集合的属性

来自分类Dev

WPF:将大型集合绑定到GridControl

来自分类Dev

将嵌套的ItemsControl绑定到嵌套的集合

来自分类Dev

将嵌套的ItemsControls绑定到嵌套的集合

来自分类Dev

将集合绑定到ContextMenu子菜单

来自分类Dev

将 Observable 集合绑定到 ListView

来自分类Dev

将集合绑定到 ComboBox 和 DataGrid

来自分类Dev

如何将两个不同的集合绑定到两个不同的ListPickers

来自分类Dev

具有ODataAction绑定到集合的Kendo UI网格

来自分类Dev

绑定到ViewModel的集合

来自分类Dev

当数据绑定到数据网格视图时,如何以编程方式将行添加到数据网格视图?

来自分类Dev

绑定数据网格后,项目集合必须为空

Related 相关文章

  1. 1

    将列表集合绑定到列表视图

  2. 2

    将图像绑定到集合中的网格视图的有效方法-Windows 8 Metro

  3. 3

    Blazor将数据绑定到集合?

  4. 4

    将数据网格中的组合框绑定到可观察的集合

  5. 5

    将模型类的列表/集合/IEnumerable 绑定到数据网格并选择列

  6. 6

    将数据绑定到网格视图

  7. 7

    MarkLogic:将数据归档到不同的集合

  8. 8

    为什么集合视图中的数组会乘以节数?

  9. 9

    将集合绑定到DataGridView

  10. 10

    将数据绑定到Windows Phone中的可观察集合

  11. 11

    为什么将Blob转换为数据URI会导致与直接数据URI方法不同的URI?

  12. 12

    将不同的集合绑定到datagrid

  13. 13

    如何将图像从集合视图传递到集合视图

  14. 14

    将集合引用从视图传递到 VM 时跟踪集合引用的最佳方法是什么

  15. 15

    将集合的集合绑定到一个画布元素

  16. 16

    无法将模型绑定到集合

  17. 17

    使用集合将模型绑定到对象

  18. 18

    将属性绑定到itemssource集合的属性

  19. 19

    WPF:将大型集合绑定到GridControl

  20. 20

    将嵌套的ItemsControl绑定到嵌套的集合

  21. 21

    将嵌套的ItemsControls绑定到嵌套的集合

  22. 22

    将集合绑定到ContextMenu子菜单

  23. 23

    将 Observable 集合绑定到 ListView

  24. 24

    将集合绑定到 ComboBox 和 DataGrid

  25. 25

    如何将两个不同的集合绑定到两个不同的ListPickers

  26. 26

    具有ODataAction绑定到集合的Kendo UI网格

  27. 27

    绑定到ViewModel的集合

  28. 28

    当数据绑定到数据网格视图时,如何以编程方式将行添加到数据网格视图?

  29. 29

    绑定数据网格后,项目集合必须为空

热门标签

归档