WPF实战案例-数据代理
程序员文章站
2022-07-06 11:49:57
在我们wpf开发中,很多人会有mvvm模式去做wpf的项目。 是否有人遇到这样一个场景:在一个界面上,有个tabcontrol上面有4个页签,每个页签里面都有一个datagrid,里面显示的列基本一样,绑定的数据集合都是同一个,但是有个差异,在第二个页签上需要第二列不显示,第三个页签只显示一个列。 ......
在我们wpf开发中,很多人会有mvvm模式去做wpf的项目。
是否有人遇到这样一个场景:在一个界面上,有个tabcontrol上面有4个页签,每个页签里面都有一个datagrid,里面显示的列基本一样,绑定的数据集合都是同一个,但是有个差异,在第二个页签上需要第二列不显示,第三个页签只显示一个列。
我们如果用的是mvvm,这个时候就会去使用数据绑定,问题在于我们怎么让datagrid的下一级也就是datagridtextcolumn识别到vm,或者怎么在模板列中识别vm,可以绑定我们在vm中声明的显示隐藏属性。
这里有个方案:
public class bindingproxy : freezable { protected override freezable createinstancecore() { throw new notimplementedexception(); } public object data { get { return (object)getvalue(dataproperty); } set { setvalue(dataproperty, value); } } // using a dependencyproperty as the backing store for data. this enables animation, styling, binding, etc... public static readonly dependencyproperty dataproperty = dependencyproperty.register("data", typeof(object), typeof(bindingproxy), new uipropertymetadata(null)); }
很简单的方式,定义一个空对象用来转接vm,将vm存入data。
下面是用法:
很简单的方式。但是这个的使用场景还是比较多的,在很多绑定操作的时候,因为层级的关系有时候不一定能找到需要的对象,通过这个代理做一个转接的作用。
有对wpf感兴趣的同学,可以加页面下方的qq群,我们一起共同进步!
推荐阅读
-
大数据营销实战案例
-
从实战案例看数据信息图设计的七大要点
-
Python爬虫实战案例之爬取喜马拉雅音频数据详解
-
WPF实战案例-打印
-
Elasticsearch结构化搜索_在案例中实战使用term filter来搜索数据
-
WPF实战案例-数据代理
-
数据分析训练营-urllib实战与反爬策略-request对象之post请求案例分析-百度翻译
-
Echarts实战案例代码(11):利用geojson数据地图map组件生成js本地版直接访问的解决方案
-
应用界面实战案例 - 如何处理客户关系管理系统中数据导入导出分析 DevExpressVisual StudioC#
-
数据表和简单的Java转换 _引用关系的实战案例