Val*_*ale 5 c# wpf binding datagrid
我正在制作一个WPF用户控件,我希望在绑定意义上与DataGrid控件类似.我的问题是:DataGrid如何知道如何绑定到IEnumerable类型的任何集合?例如:您可以将DataView作为ItemsSource传递,也可以传递任何对象集合.DataGrid如何通过查看以下内容来决定是绑定到DataView列还是绑定到对象的属性:
<DataGridTextColumn Binding="{Binding **Path=SomePropertyOrColumn**}"/>
Run Code Online (Sandbox Code Playgroud)
提前致谢.
这是一个复杂的区域;以下是 winforms 绑定的细分,但我知道 WPF 绑定并没有那么不同;
IListSource
- 如果是的话,则用于GetList()
获取实际的绑定(这就是数据表成为用于绑定目的的数据视图的方式)ITypedList
;GetItemProperties()
这是获取模型所表示的伪属性 ( ) 的灵活方式;data-view 实现ITypedList
,为每个实例创建伪属性public SomeType this[int index] {get;}
- 请注意,大多数集合都会满足此要求T
或IList<T>
对象IEnumerable<T>
是否实现了这些接口GetType()
TypeDescriptor.GetProperties(type)
就可以用来获取属性;在许多情况下,这将通过反射实现,但也可以添加间接层(通过TypeDescriptionProvider
)来为类型提供属性(这可以在运行时添加,这非常方便)TypeDescriptor.GetProperties(obj)
反射和之外TypeDescriptionProvider
,还支持ICustomTypeDescriptor
可以由单独对象实现以在运行时提供自定义属性(TypeDescriptionProvider
与单独绑定非常相似)对属性负责的对象)我不知道其中有多少适用于 WPF 绑定,但我很确定处理IListSource
是ITypedList
相同的。根据记忆,大多数(全部?)winforms 策略都可以在 WPF 上运行 - 所以可能是这样,并且更改是额外的钩子。
归档时间: |
|
查看次数: |
519 次 |
最近记录: |