数据绑定(七)使用ObjectDataProvider对象作为Binding的Source

简介: 原文:数据绑定(七)使用ObjectDataProvider对象作为Binding的Source ObjectDataProvider就是把对象作为数据源提供给Binding,类似的还有XmlDataProvider...
原文: 数据绑定(七)使用ObjectDataProvider对象作为Binding的Source

ObjectDataProvider就是把对象作为数据源提供给Binding,类似的还有XmlDataProvider,也就是把XML数据作为数据源提供给Binding,这两个类的父类都是DataSourceProvider抽象类

举例

有一个Calculator类,提供了一个Add方法

        public string Add(string arg1, string arg2)
        {
            double x = 0;
            double y = 0;
            double z = 0;
            if (double.TryParse(arg1, out x) && double.TryParse(arg2, out y))
            {
                z = x + y;
                return z.ToString();
            }
            return "Error";
        }

界面代码很简单,有三个输入框

        <TextBox x:Name="textBoxArg1" Margin="5" />
        <TextBox x:Name="textBoxArg2" Margin="5" />
        <TextBox x:Name="textBoxResult" Margin="5" />

后台代码:

            ObjectDataProvider odp = new ObjectDataProvider();
            odp.ObjectInstance = new Calculator();
            odp.MethodName = "Add";
            odp.MethodParameters.Add("0");
            odp.MethodParameters.Add("0");

            Binding bindingToArg1 = new Binding();
            bindingToArg1.Source = odp;
            bindingToArg1.Path = new PropertyPath("MethodParameters[0]");
            bindingToArg1.BindsDirectlyToSource = true;
            bindingToArg1.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;

            Binding bindingToArg2 = new Binding();
            bindingToArg2.Source = odp;
            bindingToArg2.Path = new PropertyPath("MethodParameters[1]");
            bindingToArg2.BindsDirectlyToSource = true;
            bindingToArg2.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;

            Binding bindingToResult = new Binding();
            bindingToResult.Source = odp;
            bindingToResult.Path = new PropertyPath(".");

            textBoxArg1.SetBinding(TextBox.TextProperty, bindingToArg1);
            textBoxArg2.SetBinding(TextBox.TextProperty, bindingToArg2);
            textBoxResult.SetBinding(TextBox.TextProperty, bindingToResult);

首先定义了一个 ObjectDataProvider对象并与Calculator类的Add方法进行关联,把第一个输入框中的内容同函数的参数1进行绑定,第二个输入框中的内容同函数的参数2进行绑定,函数的返回值与第三个输入框绑定,BindsDirectlyToSource = true这句代码的意思是,Binding对象只负责把从UI元素收集到的数据写入其直接Source(即ObjectDataProvider对象)而不是被ObjectDataProvider对象包装着的Calculator对象,


目录
相关文章
element-ui中的prop 的相关作用
element-ui中的prop 的相关作用
452 0
|
C#
WPF QuickStart系列之数据绑定(Data Binding)
原文:WPF QuickStart系列之数据绑定(Data Binding) 这篇博客将展示WPF DataBinding的内容。 首先看一下WPF Data Binding的概览, Binding Source可以是任意的CLR对象,或者XML文件等,Binding Target需要有依赖属性。
1241 0
|
IDE 开发工具 Android开发
Android开发教程 - 使用Data Binding(五)数据绑定
本系列目录 使用Data Binding(一)介绍 使用Data Binding(二)集成与配置 使用Data Binding(三)在Activity中的使用 使用Data Binding(四)在Fragment中的使用 ...
1062 0
|
容器 C#
数据绑定(四)使用DataContext作为Binding的Source
原文:数据绑定(四)使用DataContext作为Binding的Source DataContext属性被定义在FrameworkElement类里,这个类是WPF控件的基类,这意味着所有WPF控件都具备这个属性,...
1089 0
|
XML 数据格式 .NET
数据绑定(六)使用XML数据作为Binding的Source
原文:数据绑定(六)使用XML数据作为Binding的Source .NET Framework提供了两套处理XML数据的类库 1.
905 0
|
.NET 容器 开发框架
数据绑定(三)为Binding指定绑定源的几种方法
原文:数据绑定(三)为Binding指定绑定源的几种方法 Binding的源是数据的来源,所以,只要一个对象包含数据并能通过属性把数据暴露出来,它就能当作Binding的源来使用,常用的办法有: 一。
1024 0
|
C#
数据绑定(二)把控件作为Binding源
原文:数据绑定(二)把控件作为Binding源 下面的代码把一个TextBox的Text属性关联在了Slider的Value属性上 效果如...
801 0
|
容器
数据绑定(八)使用Binding的RelativeSource
原文:数据绑定(八)使用Binding的RelativeSource 当一个Binding有明确的数据来源时可以通过为Source或ElementName赋值的办法让Binding与之关联,有的时候由于不能确定Source的对象叫什么名字,但知道它与作为Binding目标的对象在UI布局上有相对关系,比如控件自己关联自己的某个数据、关联自己某级容器的数据,就要使用Binding的RelativeSource属性。
782 0
数据绑定(十)Binding的数据转换
原文:数据绑定(十)Binding的数据转换 当Source端Path所关联的数据与Target端目标属性数据类型不一致时,需要添加数据转换器,数据转换器是一个自定义的类,这个类需要实现IValueConverter...
807 0