WPF DataGrid的Items和ItemsSource属性有什么区别?

7
据我从智能感知中了解到的,两者的区别在于返回类型和ItemsSource具有设置器,而Items仅具有获取器。但实际上,我不明白为什么这两个属性需要分开而不只是一个属性。
请问有人能解释一下为什么这些是单独的属性而不只是一个属性吗?
此外,如果我漏掉了什么,请问有人能向我解释何时使用其中之一而不是另一个(除了需要设置器的明显需求)?例如,在什么情况下我会想要使用Items而不是ItemsSource?
1个回答

12
以下是翻译内容:

WPF DataGrid 的 Items 和 ItemsSource 属性有什么区别?

DataGrid 是一个 ItemsControl 类,因此这适用于所有其他 ItemsControl 类。

  • Items 属性是一个 ItemCollection,通过 XAML 填充。它保存对象,但旨在用于 FrameworkElements。

  • ItemsSource 可以绑定到简单的 IEnumerable,并支持 INotifyCollectionChanged(如果可用)。它还支持 DataTemplates。

什么时候我需要使用 Items 而不是 ItemsSource?

ItemsSource 用于将数据绑定到 ViewModel。

您只会在一些特定情况下使用 Items,例如当您拥有固定数量的 XAML 项时。对于网格来说不太可能使用,但对于 ComboBox 更有用。

您永远不会同时使用两者。

MSDN 页面 显示了两者的典型用法。


如果您想要计算所有可见项的数量(例如在过滤 ICollectionView 后),您可以检查 Items 属性。 - Shahin Dohan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接