`
jiasongmao
  • 浏览: 653872 次
  • 性别: 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函数的情况下,目标数据的值才会被刷新。

分享到:
评论

相关推荐

    wpf5种数据绑定方式示范

    在Windows Presentation Foundation (WPF) 中,数据绑定是将用户界面(UI)元素与应用程序的数据模型连接起来的关键机制。这使得UI可以动态地反映数据的变化,反之亦然。本示例将详细介绍WPF中的五种数据绑定方式:...

    wpf 二种方式绑定控件

    wpf 二种方式绑定控件wpf 二种方式绑定控件wpf 二种方式绑定控件wpf 二种方式绑定控件wpf 二种方式绑定控件wpf 二种方式绑定控件

    WPF样式静态资源绑定

    WPF样式静态资源绑定

    wpf中DataGrid数据双向绑定

    实现了数据的双向绑定,更改DataGrid的数据会更新后台数据,更改后台数据会在DataGrid上实时显示。

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

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

    WPF在DataGrid列中使用ComboBox绑定,改变ComboBox可回传至绑定的实体,ComboBox绑定的是一个实体

    WPF在DataGrid列中使用ComboBox绑定,改变ComboBox可回传至绑定的实体, 网上找了好久,终于搞定了,不是那个用枚举的例子!!ComboBox绑定的是一个实体列表. 程序名字叫 给唐僧选老婆!哈哈

    WPF实现同线程绑定,跨线程绑定

    WPF实现一个按钮,内容是数字,利用绑定 线程可以增加按钮数字 点击按钮也可以增加数字 退出不报错。

    WPF纯MVVM事件绑定+事件参数 完美示例

    WPF 纯MVVM模式 任意事件绑定 获取EventArgs 完美取代原生事件+=模式 只需要引用System.Windows.Interactivity

    WPF_MVVM中DataGrid列中使用ComBox绑定

    总结来说,WPF MVVM中在DataGrid列中使用ComBox绑定,需要理解DataGrid、DataTemplate、ComBox以及MVVM的双向绑定原理。通过定义ViewModel、设置DataGrid和ComBox的绑定属性,以及处理命令,我们可以实现用户在...

    WPF 数据绑定 命令绑定 事件绑定 View和ViewModel的通信 MVVM模式

    WPF 数据绑定 命令绑定 事件绑定 View和ViewModel的通信

    wpf 修改前景颜色 双向绑定

    ,Mode=TwoWay}" IsChecked="{Binding IsChecked,Mode=TwoWay}" VerticalAlignment="Center" Click="CheckBox_Click" Checked="CheckBox_Checked" Unchecked="CheckBox_Unchecked" /&gt;

    WPF实现MVVM的事件绑定

    WPF实现MVVM的事件绑定的两种非常规方式。 参考博客:https://blog.csdn.net/IQQQQU/article/details/86530285 1、重写InvokeCommandAction来扩充返回的参数 2、运用Behavior来实现事件,可以通过两种方式来获取...

    WPF TextBox绑定List列表.zip

    WPF使用TextBox绑定List多层绑定,说明在我的博客https://blog.csdn.net/chulijun3107/article/details/102010865。那块也有全部的代码。

    WPF自定义命令,快捷键绑定

    在WPF中,我们可以使用 KeyBinding 类来实现快捷键绑定。KeyBinding 类提供了两个属性:Key 和 Modifiers,分别用于指定快捷键和修饰键。 在上面的代码中,我们使用 KeyBinding 类将 Help 命令绑定到 Ctrl+H 快捷键...

    WPF绑定静态变量的示例代码

    wpf 给控件绑定静态变量,静态变理改变后控件上的值随着变量的demo,这只是个demo,具体应用场景可以根据实际的情况进行调整,本demo使用 vs2019进行编写。

    WPF数据绑定例子

    1. **数据上下文(DataContext)**:这是WPF中数据绑定的核心,它定义了一个范围,在这个范围内所有控件都可以访问相同的数据源。设置一个UI元素的数据上下文,意味着该元素及其子元素都可以通过相对路径来访问数据...

    WPF Binding绑定 Command命令基础学习源码

    WPF Binding绑定 对象和view的绑定 界面修改直接改变对象的修改 Command命令 事件的绑定 基础学习源码

    WPF Treeview 无限分级绑定集合数据 (1)

    WPF Treeview 无限分级绑定集合数据 (1)

    WPF UI数据绑定

    其中,数据绑定是WPF中的核心特性,允许UI元素与应用程序中的数据源进行交互,实现了视图(View)和模型(Model)之间的自动同步,极大地简化了UI开发和维护。 ### 数据绑定基本概念 1. **数据源(DataSource)**:...

    WPF之数据绑定总结(博客源码)

    1.TextBox绑定后台的值(一次绑定,类似于赋值); 2.TextBox绑定后台的值(可通过改绑定的值自动更新值); 3.TextBox绑定另一个控件的属性值(随时更新值); 4.TextBox绑定另一个控件的属性值(双向更新); 5....

Global site tag (gtag.js) - Google Analytics