ObjectDataProvider数据源它可以把对象作为数据源提供给Binding,可用于绑定函数,

实例如下

 public partial class BindObiectDataProvider : Window
{
public BindObiectDataProvider()
{
InitializeComponent();
SetBinding();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
ObjectDataProvider odp = new ObjectDataProvider();
odp.MethodName = "add";
odp.ObjectInstance = new Calculator();
odp.MethodParameters.Add("");
odp.MethodParameters.Add("");
MessageBox.Show(odp.Data.ToString()); }
private void SetBinding()
{
ObjectDataProvider odp = new ObjectDataProvider();//此类是把对象作为数据源提供给Binding
odp.ObjectInstance = new Calculator();
odp.MethodName = "add";//指定将要调用Calculator对象总的add方法
odp.MethodParameters.Add("");//相当于告诉odp去调用含有二个参数的add可以用于区分重载,
odp.MethodParameters.Add("");//类型敏感的因add参数为字符串,古此处也应字符串
Binding bindingToArg1 = new Binding("MethodParameters[0]")//参数为绑定的路径
{
Source = odp,
BindsDirectlyToSource = true,//告诉Binding对象只负责把从UI得到的数据写入Source(odp)而不是写入odp对象包装的Calculator对象中
UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged//枚举值,用于指定更新立即将值回传到Source
};
Binding bindingToArg2 = new Binding("MethodParameters[1]")
{
Source = odp,
BindsDirectlyToSource = true,
UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged
};
Binding bindResulate = new Binding(".") { Source = odp };
this.textBoxArg1.SetBinding(TextBox.TextProperty, bindingToArg1);
this.textBoxArg2.SetBinding(TextBox.TextProperty, bindingToArg2);
this.textBoxResult.SetBinding(TextBox.TextProperty, bindResulate);
}
}
 <StackPanel>
<Button Content="绑定非暴露的属性(此处为返回值)" Click="Button_Click"></Button>
<TextBox Margin="" x:Name="textBoxArg1"></TextBox>
<TextBox Margin="" x:Name="textBoxArg2"></TextBox>
<TextBox Margin="" x:Name="textBoxResult"></TextBox>
</StackPanel>
public  class Calculator
{
public string add(string str1,string str2)
{
double x = ;
double y = ;
double z = ;
if(double.TryParse(str1,out x)&&double.TryParse(str2,out y))
{
z = x + y;
return z.ToString();
}
return "Input Error";
}
}

 

Binding 之ObjectDataProvider数据源的更多相关文章

  1. Binding笔记

    Binding基础  绑定某个对象的属性值到控制上,写法如下: public class Order : INotifyPropertyChanged//只要实现此接口 { public event ...

  2. Binding

    Binding基础  绑定某个对象的属性值到控制上,写法如下: public class Order : INotifyPropertyChanged//只要实现此接口 { public event  ...

  3. WPF之Binding深入探讨

    原文:http://blog.csdn.net/fwj380891124/article/details/8107646 1,Data Binding在WPF中的地位 程序的本质是数据+算法.数据会在 ...

  4. WPF的Binding功能解析

    1,Data Binding在WPF中的地位 程序的本质是数据+算法.数据会在存储.逻辑和界面三层之间流通,所以站在数据的角度上来看,这三层都很重要.但算法在3层中的分布是不均匀的,对于一个3层结构的 ...

  5. WPF之Binding深入探讨--Darren

    1,Data Binding在WPF中的地位 程序的本质是数据+算法.数据会在存储.逻辑和界面三层之间流通,所以站在数据的角度上来看,这三层都很重要.但算法在3层中的分布是不均匀的,对于一个3层结构的 ...

  6. binding(转)

    1,Data Binding在WPF中的地位 程序的本质是数据+算法.数据会在存储.逻辑和界面三层之间流通,所以站在数据的角度上来看,这三层都很重要.但算法在3层中的分布是不均匀的,对于一个3层结构的 ...

  7. WPF之Binding【转】

    WPF之Binding[转] 看到WPF如此之炫,也想用用,可是一点也不会呀. 从需求谈起吧: 首先可能要做一个很炫的界面.见MaterialDesignInXAMLToolKit. 那,最主要的呢, ...

  8. WPF之Binding深入探讨 转载:http://blog.csdn.net/fwj380891124/article/details/8107646

    1,Data Binding在WPF中的地位 程序的本质是数据+算法.数据会在存储.逻辑和界面三层之间流通,所以站在数据的角度上来看,这三层都很重要.但算法在3层中的分布是不均匀的,对于一个3层结构的 ...

  9. WPF基础知识、界面布局及控件Binding(转)

    WPF是和WinForm对应的,而其核心是数据驱动事件,在开发中显示的是UI界面和逻辑关系相分离的一种开放语言.UI界面是在XAML语言环境下开发人员可以进行一些自主设计的前台界面,逻辑关系还是基于c ...

随机推荐

  1. Linux学习笔记1:配置Linux网络和克隆虚拟机并更改配置

    一.配置Linux网络 在安装Linux的时候,一定要保证你的物理网络的IP是手动设置的,要不然会在Linux设置IP连通网络的时候会报network is unreachable 并且怎么也找不到问 ...

  2. AndroidUI 视图动画-透明动画效果 (AlphaAnimation)

    1.新建一个Android项目,Activity添加一个按钮如下代码: <Button android:id="@+id/btnAiphaAnimation" android ...

  3. Struts2 四、Struts2 处理流程

    1. 一个请求在Struts2框架中的处理步骤: a) 客户端初始化一个指向Servlet容器的请求: b) 根据Web.xml配置,请求首先经过ActionContextCleanUp过滤器,其为可 ...

  4. linux学习之(五)-linux文解压、压缩、安装

    查看一个文件的类型 命令:  file  文件名 创建一个.tar类型的压缩包使用命令:tar -cvf    [文件名].tar  目录   例:tar -cvf   a.tar    yasuo/ ...

  5. Controller中获取输入参数注解使用总结

    1.处理request的uri部分的参数(即restful访问方式):@PathVariable. 当使用restful访问方式时, 即 someUrl/{paramId}, 这时的参数可通过 @Pa ...

  6. gcc中-pthread和-lpthread的区别

    最近在使用linux mint15,里面自带的gcc时4.7的,当我编译多线程程序时,使用-lpthread居然说没有找到线程库函数!!!然后man了一下,才发现在gcc 4.7中链接线程库使用-pt ...

  7. 6.828 lab1 bootload

    MIT6.828 lab1地址:http://pdos.csail.mit.edu/6.828/2014/labs/lab1/ 第一个练习,主要是让我们熟悉汇编,嗯,没什么好说的. Part 1: P ...

  8. gui组件

    //guI; graphics user interfaceimport javax.swing.*;import java.awt.*; public class Main { public sta ...

  9. 在MyEclipse环境下添加MySql数据库

    首先最好在添加的时候,确保你的数据库处于打开状态:其次,要按照jdbc:mysql://[host:port],[host:port].../[database]把url写对:然后,需要添加mysql ...

  10. javascript正则表达式/g与/i及/gi的意义

    regularexpression=/pattern/[switch] 这个switch就有三种值 g: 全局匹配 i: 忽略大小写 gi: 全局匹配 + 忽略大小写 JScript 语言参考 --- ...