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函数的情况下,目标数据的值才会被刷新。
分享到:
相关推荐
在Windows Presentation Foundation (WPF) 中,数据绑定是将用户界面(UI)元素与应用程序的数据模型连接起来的关键机制。这使得UI可以动态地反映数据的变化,反之亦然。本示例将详细介绍WPF中的五种数据绑定方式:...
wpf 二种方式绑定控件wpf 二种方式绑定控件wpf 二种方式绑定控件wpf 二种方式绑定控件wpf 二种方式绑定控件wpf 二种方式绑定控件
WPF样式静态资源绑定
实现了数据的双向绑定,更改DataGrid的数据会更新后台数据,更改后台数据会在DataGrid上实时显示。
WPF 支持绑定到 XML 数据,使用 `XmlDataProvider` 将 XML 文档加载到内存,并使用 `XPath` 表达式选择需要的数据。同时,`ObjectDataProvider` 可以动态创建对象实例,并将其作为一个数据源。 **DataTemplates 和...
WPF在DataGrid列中使用ComboBox绑定,改变ComboBox可回传至绑定的实体, 网上找了好久,终于搞定了,不是那个用枚举的例子!!ComboBox绑定的是一个实体列表. 程序名字叫 给唐僧选老婆!哈哈
WPF实现一个按钮,内容是数字,利用绑定 线程可以增加按钮数字 点击按钮也可以增加数字 退出不报错。
WPF 纯MVVM模式 任意事件绑定 获取EventArgs 完美取代原生事件+=模式 只需要引用System.Windows.Interactivity
总结来说,WPF MVVM中在DataGrid列中使用ComBox绑定,需要理解DataGrid、DataTemplate、ComBox以及MVVM的双向绑定原理。通过定义ViewModel、设置DataGrid和ComBox的绑定属性,以及处理命令,我们可以实现用户在...
WPF 数据绑定 命令绑定 事件绑定 View和ViewModel的通信
,Mode=TwoWay}" IsChecked="{Binding IsChecked,Mode=TwoWay}" VerticalAlignment="Center" Click="CheckBox_Click" Checked="CheckBox_Checked" Unchecked="CheckBox_Unchecked" />
WPF实现MVVM的事件绑定的两种非常规方式。 参考博客:https://blog.csdn.net/IQQQQU/article/details/86530285 1、重写InvokeCommandAction来扩充返回的参数 2、运用Behavior来实现事件,可以通过两种方式来获取...
WPF使用TextBox绑定List多层绑定,说明在我的博客https://blog.csdn.net/chulijun3107/article/details/102010865。那块也有全部的代码。
在WPF中,我们可以使用 KeyBinding 类来实现快捷键绑定。KeyBinding 类提供了两个属性:Key 和 Modifiers,分别用于指定快捷键和修饰键。 在上面的代码中,我们使用 KeyBinding 类将 Help 命令绑定到 Ctrl+H 快捷键...
wpf 给控件绑定静态变量,静态变理改变后控件上的值随着变量的demo,这只是个demo,具体应用场景可以根据实际的情况进行调整,本demo使用 vs2019进行编写。
1. **数据上下文(DataContext)**:这是WPF中数据绑定的核心,它定义了一个范围,在这个范围内所有控件都可以访问相同的数据源。设置一个UI元素的数据上下文,意味着该元素及其子元素都可以通过相对路径来访问数据...
WPF Binding绑定 对象和view的绑定 界面修改直接改变对象的修改 Command命令 事件的绑定 基础学习源码
WPF Treeview 无限分级绑定集合数据 (1)
其中,数据绑定是WPF中的核心特性,允许UI元素与应用程序中的数据源进行交互,实现了视图(View)和模型(Model)之间的自动同步,极大地简化了UI开发和维护。 ### 数据绑定基本概念 1. **数据源(DataSource)**:...
1.TextBox绑定后台的值(一次绑定,类似于赋值); 2.TextBox绑定后台的值(可通过改绑定的值自动更新值); 3.TextBox绑定另一个控件的属性值(随时更新值); 4.TextBox绑定另一个控件的属性值(双向更新); 5....