- 端游游戏开发
WPF实战案例-数据代理
时间:2018-12-24 18:13:08 作者:06评比 来源:06评比 查看:13 评论:0内容摘要:在我们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。
下面是用法:
很简单的方式。但是这个的使用场景还是比较多的,在很多绑定操作的时候,因为层级的关系有时候不一定能找到需要的对象,通过这个代理做一个转接的作用。
- 相关文章
- 本类更新
-
3-8使用ASP.NET Core2.2创建WebApp
-
1-1surging 微服务引擎 1.0 正式发布
-
12-30[UWP]缓存Lottie动画帧
-
12-28.NetCore WebApi + Vue +MySql搭建博客
-
12-26采用异步来实现重新连接服务器或者重新启动服务
-
12-24WPF实战案例-数据代理
-
12-22C# 输入一个整数,求质因数
-
12-20WPF实现可视化控件打印及打印预览
-
12-18Asp.Net Core下的两种路由配置方式
-
12-16status 返回当前请求的http状态码
-
- 本类推荐
- 本类排行