`
jiasongmao
  • 浏览: 654003 次
  • 性别: 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中数据绑定高级特性的实战教程,对于想要深入理解WPF数据绑定机制,尤其是ObjectDataProvider和MultiBinding的开发者来说,是一个非常有价值的参考资料。通过研究这个例子,你可以提升...

    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编程宝典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界面的控件上,使得数据显示和交互变得...

    Apress.Pro.WPF.in.C.Sharp.2008.2nd.Edition.Feb.2008

    WPF编程宝典——使用C# 2008和.NET 3.5(第2版)英文版 目录 第1章 WPF概述 1 1.1 理解Windows图形 1 1.1.1 DirectX:新的图形引擎 1 1.1.2 硬件加速与WPF 2 1.2 WPF:高级API 4 1.2.1 分辨率无关性 5 1.2.2 WPF的...

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

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

Global site tag (gtag.js) - Google Analytics