使用ObjectDataProvider 将函数应用到绑定
2016-12-02 14:34
399 查看
ObjectDataProvider 类用于包装和创建可以用作绑定源的对象。创建一个对象用作于绑定源的方法有多种。比如在代码中创建对象并将其设置为窗口的DataContext,后者在XAML页的资源部分创建对象。
ObjectDataProvider 使你能够在 XAML 中创建可用作绑定源的对象。
ObjectDataProvider 提供ConstructorParameters属性,在创建对象的时候将参数传递给对象的构造函数。
ObjectDataProvider
提供MethodName 属性,获取或设置绑定中要调用的方法的名称。并使用MethodParameters 属性将参数传递给该方法。然后将该方法返回的结果用于参与绑定。
下面举个例子。假设有一个 Person 对象,包含一个字符串类型的属性名为 PersonName 。你可以在XAML资源中定义它:
然将它绑定到TextBlock 。
但是如果需要对一个方法进行绑定而不是属性该如何做呢?
下面的例子中我们调用 Enum.GetValues 函数枚举出DateTimeKind 枚举类型的所有常数,并转换为枚举,然后将返回的结果列表作为ComboBox (或者ListBox) 的数据源进行绑定。
假设我们已经定义看 sys 这个命名空间:
上面的代码其实就相当于下面的代码:
现在我们将方法绑定到ComboBox 。
<ComboBox Height="25" Width="150"
ItemsSource="{Binding Source={StaticResource dateTimeKindValues}}"/>
可以看到ComboBox 中的列表中就是DateTimeKind 所有的枚举类型。
参考文章:https://wpf.2000things.com/2012/02/01/485-binding-a-combobox-to-an-enumerated-types-list-of-values/
ObjectDataProvider 使你能够在 XAML 中创建可用作绑定源的对象。
ObjectDataProvider 提供ConstructorParameters属性,在创建对象的时候将参数传递给对象的构造函数。
ObjectDataProvider
提供MethodName 属性,获取或设置绑定中要调用的方法的名称。并使用MethodParameters 属性将参数传递给该方法。然后将该方法返回的结果用于参与绑定。
下面举个例子。假设有一个 Person 对象,包含一个字符串类型的属性名为 PersonName 。你可以在XAML资源中定义它:
<Window.Resources> <src:Person x:Key="myDataSource" PersonName="Joe"/> </Window.Resources>
然将它绑定到TextBlock 。
<TextBlock Text="{Binding Source={StaticResource myDataSource}, Path=PersonName}"/>
但是如果需要对一个方法进行绑定而不是属性该如何做呢?
下面的例子中我们调用 Enum.GetValues 函数枚举出DateTimeKind 枚举类型的所有常数,并转换为枚举,然后将返回的结果列表作为ComboBox (或者ListBox) 的数据源进行绑定。
<Window.Resources> <ObjectDataProvider x:Key="dateTimeKindValues" MethodName="GetValues" ObjectType="{x:Type sys:Enum}"> <ObjectDataProvider.MethodParameters> <x:Type TypeName="sys:DateTimeKind"/> </ObjectDataProvider.MethodParameters> </ObjectDataProvider> </Window.Resources>
假设我们已经定义看 sys 这个命名空间:
xmlns:sys="clr-namespace:System;assembly=mscorlib"
上面的代码其实就相当于下面的代码:
DateTimeKind[] values = (DateTimeKind[])Enum.GetValues(typeof(DateTimeKind));
现在我们将方法绑定到ComboBox 。
<ComboBox Height="25" Width="150"
ItemsSource="{Binding Source={StaticResource dateTimeKindValues}}"/>
可以看到ComboBox 中的列表中就是DateTimeKind 所有的枚举类型。
参考文章:https://wpf.2000things.com/2012/02/01/485-binding-a-combobox-to-an-enumerated-types-list-of-values/
相关文章推荐
- WPF中使用ObjectDataProvider绑定方法
- WPF使用 ObjectDataProvider 为方法作为绑定数据源
- 数据绑定(七)使用ObjectDataProvider对象作为Binding的Source
- WPF中使用ObjectDataProvider绑定方法
- WPF中使用ObjectDataProvider绑定方法
- MSDN 教程短片 WPF 20(绑定3-ObjectDataProvider)
- glib中g_object_set_data及相关函数的使用[0713]
- 使用ObjectListDataProvider
- WPF中的binding(八)- 使用ObjectDataProvider对象作为Binding的Source
- WPF之Binding基础九 使用ObjectDataProvider作为Binding的源
- 用ObjectDataProvider绑定方法,用IValueConverter实现数据类型转换,重载ValidationRule实现数据验证,BindsDirectlyToSource等
- Windows Presentation Foundation(WPF)中的数据绑定(使用XmlDataProvider作控件绑定之二:使用外部URL的XML文件)
- ObjectDataProvider使用简单案例
- ObjectDataProvider 作为Binding的Source来使用的案例
- WPF:在XmlDataProvider上使用主-从绑定(Master-Detail Binding)
- WPF:在XmlDataProvider上使用主-从绑定(Master-Detail Binding)
- Windows Presentation Foundation(WPF)中的数据绑定(使用XmlDataProvider作控件绑定)
- 修改OleDB provider 移植 Data Application Blocks项目中使用存储过程的应用(Oracle or MsSqlServer)到Microsoft Access
- WPF中使用XmlDataProvider做控件绑定
- WPF ObjectDataProvider的使用-只能检索用