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 次 |
| 最近记录: |