当前位置: 移动技术网 > IT编程>开发语言>.net > WPF实战案例-数据代理

WPF实战案例-数据代理

2018年12月24日  | 移动技术网IT编程  | 我要评论

爱的言灵下载,山海经 白话文,幸福起点交友网

在我们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群,我们一起共同进步!

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网