`
jiasongmao
  • 浏览: 671126 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

WPF中使用ObjectDataProvider绑定方法

    博客分类:
  • WPF
阅读更多
ObjectDataProvider提供了绑定任意.net类型的功能,具体功能如下:
1.ObjectDataProvider提供了绑定任意CLR类型的公嫩那个。
2.它可以再XAML中利用生命史的语言以及参数化的构造函数完成对数据的创建
3.增加对成员函数的绑定
4.提供了更多的异步绑定的功能

下面用一个加法计算器来进行实例说明:
请先看我们的加法类:
namespace BindingDemo
{
    public class Calculator
    {
        public double Add(double one,double two)
        {
            return one + two;
        }

        public string Add(string arg1, string arg2) 
        { 
            int x = 0; 
            int y = 0; 
            if (int.TryParse(arg1, out x) && int.TryParse(arg2, out y)) 
            { 

                return this.Add(x, y).ToString(); 
            } 
            else 
            { 
                return "Input Error!"; 
            } 
        }
    }
}


接下来是XAML文件的定义:
<Window x:Class="BindingDemo.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:BindingDemo"
    xmlns:system="clr-namespace:System;assembly=mscorlib" 
    Title="Add" Height="300" Width="300">

    <Window.Resources>
        <ObjectDataProvider x:Key="odp" ObjectType="{x:Type local:Calculator}" MethodName="Add">
            <ObjectDataProvider.MethodParameters>
                <system:String>0</system:String>
                <system:String>0</system:String>
            </ObjectDataProvider.MethodParameters>
        </ObjectDataProvider>
    </Window.Resources>
    <StackPanel>
        <TextBox x:Name="textBox1" Margin="5" Text="{Binding Source={StaticResource odp}, Path=MethodParameters[0], BindsDirectlyToSource=true, UpdateSourceTrigger=PropertyChanged}" />
        <TextBox x:Name="textBox2" Margin="5" Text="{Binding Source={StaticResource odp}, Path=MethodParameters[1], BindsDirectlyToSource=true, UpdateSourceTrigger=PropertyChanged}"/>
        <TextBox x:Name="textBox3" Margin="5" Text="{Binding Source={StaticResource odp}, Mode=OneWay}"/>
    </StackPanel>
</Window>


说明:1.xaml文件中对于命名空间的定义:
     xmlns:local="clr-namespace:BindingDemo"
    xmlns:system="clr-namespace:System;assembly=mscorlib"
我们应该知道在xaml文件中其实并没有引入.net常规类库中命名空间,如System、System.Data等,如果我们需要在xaml文件中使用,则需要将对应的命名空间添加到xaml中

2.<TextBox x:Name="textBox1" Margin="5" Text="{Binding Source={StaticResource odp}, Path=MethodParameters[0], BindsDirectlyToSource=true, UpdateSourceTrigger=PropertyChanged}" />
这里需要补充说明的是UpdateSourceTrigger属性,它绑定了数据更新的规则。UpdateSourceTrigger有一下四种取值:
Default-------它是UpdateSourceTrigger的默认取值。当UpdateSourceTrigger属性被设置为改枚举值的时候,对数据的更新则会根据根据参与绑定的属性进行相应的更改。

PropertyChanged----只要数据源中有意思的更改,数据绑定机制将自动那个刷新目标数据的值。

LostFocus----当绑定的目标失去输入焦点的时候,数据绑定机制将自动刷新目标数据的值。

Explicit------只有再调用BindingExpression的UpdateSource函数的情况下,目标数据的值才会被刷新。

分享到:
评论

相关推荐

    wpf 数据绑定 经典 数据绑定 经典

    WPF 支持绑定到 XML 数据,使用 `XmlDataProvider` 将 XML 文档加载到内存,并使用 `XPath` 表达式选择需要的数据。同时,`ObjectDataProvider` 可以动态创建对象实例,并将其作为一个数据源。 **DataTemplates 和...

    wpf数据绑定

    **提供程序**:为了帮助开发者正确实现绑定,WPF提供了两种特殊的提供程序——`XmlDataProvider`和`ObjectDataProvider`。这些提供程序可以帮助开发者更方便地从XML或对象获取数据并将其绑定到UI元素上。 #### 创建...

    WPF Binding(绑定)详解实例

    在Windows Presentation Foundation (WPF)中,数据绑定是一种强大的功能,它允许用户界面(UI)元素与应用程序中的数据模型进行交互。通过数据绑定,UI可以直接反映数据的变化,反之亦然,使得开发更加高效且易于维护...

    WPF示例代码

    总的来说,这个压缩包提供了WPF中数据绑定高级特性的实战教程,对于想要深入理解WPF数据绑定机制,尤其是ObjectDataProvider和MultiBinding的开发者来说,是一个非常有价值的参考资料。通过研究这个例子,你可以提升...

    WPF 使用 XmlDataProvider 提供数据.rar

    在WPF应用的XAML文件中,你可以使用`XmlDataProvider`来引用XML文件并定义数据绑定。下面是一个例子: ```xml xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"&gt; &lt;!-- 将你的XML数据放在这里 --...

    wpf 实现下雪效果

    在WPF(Windows Presentation Foundation)中实现下雪效果是一种常见的视觉特效,它可以为用户界面增添动态美感,尤其在冬季主题或者节日场景中十分适用。本文将深入探讨如何使用WPF来创建这种逼真的下雪效果。 ...

    WPF编程宝典 part1

    2.4 使用其他名称空间中的类型 36 2.5 加载和编译XAML 38 2.5.1 只使用代码 38 2.5.2 使用代码和未经编译的XAML 40 2.5.3 使用代码和编译过的XAML 42 2.5.4 只使用XAML 44 2.6 小结 45 第3章 布局 47 3.1 理解WPF中...

    WPF编程宝典 part2

    2.4 使用其他名称空间中的类型 36 2.5 加载和编译XAML 38 2.5.1 只使用代码 38 2.5.2 使用代码和未经编译的XAML 40 2.5.3 使用代码和编译过的XAML 42 2.5.4 只使用XAML 44 2.6 小结 45 第3章 布局 47 3.1 理解WPF中...

    WPF类层次结构WPF类层次结构

    `DataSourceProvider` 则包含了具体的实现,如 `ObjectDataProvider` 和 `XmlDataProvider`,它们分别用于从对象和XML中获取数据。 ##### 2.5 依赖属性类 `DependencyProperty`, `DependencyPropertyKey` 依赖属性...

    一款非常好的WPF编程宝典2010 源代码

    2.4 使用其他名称空间中的类型 38 2.5 加载和编译XAML 40 2.5.1 只使用代码 41 2.5.2 使用代码和未编译的XAML 43 2.5.3 使用代码和编译过的XAML 44 2.5.4 只使用XAML 46 2.6 结束语 47 第3章 Application类 ...

    WPF Binding 学习笔记

    在WPF中,数据绑定允许UI控件(目标)动态地显示或响应数据源(源)的变化。 1. **数据绑定基础**: - **绑定机制**:WPF的绑定涉及两个主要部分,数据源(通常在业务逻辑层)和UI控件(用户界面层)。数据源提供...

    (20)数据源提供器(DataProvider)[定义].pdf

    `DataControl` 类则包含了处理数据库操作的方法,如 `GetAllProductInfo`、`GetProductInfoByCategoryID` 等,这些方法返回的对象或集合可以通过 ObjectDataProvider 绑定到WPF界面的控件上,使得数据显示和交互变得...

    WPF之DataGrid应用

    【WPF之DataGrid应用】 在Windows Presentation Foundation (WPF) 中,DataGrid 是一个非常重要的控件,用于展示和编辑表格数据。...尽管 DataGrid 的使用可能有些复杂,但一旦掌握,它将成为 WPF 开发中的得力助手。

    WPF:将价值转换器放在何处?

    在Windows Presentation Foundation (WPF) 中,值转换器(Value Converter)是一种强大的工具,它允许开发者将视图层的数据(通常是从数据绑定源获取的)转换为适合在用户界面(UI)中显示的形式,或者将用户界面中...

    .NET高级代码审计(第六课) DataContractSerializer反序列化漏洞1

    `ObjectDataProvider`是WPF(Windows Presentation Foundation)中的一个类,用于绑定数据到UI元素。在反序列化场景中,攻击者可以通过控制`ObjectDataProvider`来调用任意引用类的方法。例如,如果反序列化的对象是...

Global site tag (gtag.js) - Google Analytics