原文:https://www.cnblogs.com/tansm/archive/2007/09/21/901122.html

接上篇文章WPF 学习笔记(数据绑定篇)

BindToMethod

这个示例功能是将标准温度转化为:摄氏度Celsius或者华氏度Fahrenheit,此转化是通过调用一个public string ConvertTemp(double degree, TempType temptype)方法获得最终的结果的。

此示例相对还是比较复杂的,首先声明一个方法类型的数据源:

0 Celsius

此XAML描述了使用TemperatureScale类实例的ConvertTemp方法作为数据源,当然,我们需要给一个默认的调用数据。

然后我们希望将文本框的内容绑定到方法的第一个参数上:

这里需要指定将字符串转化为double的转化器,而且还要有一个防止用户录入错误的数据的校验器。

第二步,我们需要将下拉框绑定到第二个参数:

Celsius Fahrenheit

和上面的一样,绑定到第二个参数上。

这里有个巧妙的地方,XAML直接将对象实例Celsius和Fahrenheit作为ComboBox的明细了,我们看见下拉框显示正确,而且可以不用转换器直接作为第二个参数。

最后就是绑定结果了:

HierarchicalDataTemplate

在这里例子中,我们将看见:

  • 具有层次结构的数据绑定到树控件和菜单控件;
  • 在延伸的代码中,你将看见这种绑定同样支持事件跟踪。

在此示例中,包含一个层次结构的数据对象:

在绑定到树控件和菜单时,是直接绑定的:

那么控件如何知道他的明细使用哪个集合属性呢?这里就靠HierarchicalDataTemplate了。

上面的XAML作为资源定义,描述为类型League的明细使用Divisions属性。

最后我对这个示例程序进行了改造,首先修改数据类的所有List类型改为ObservableCollection,以便集合实现更改通知。然后我添加了一个菜单:AddTeam,单击此菜单时,我向数据源添加了一个Team对象,我发现绑定系统都自动检测到这个改变了。

因此,我们可以利用此特性,定义一个描述菜单的实体结构,然后绑定到菜单上,这样,实际的代码将操控与特定菜单实现无关的实体,从而达到隔离的目的。


<
Previous Post
WPF 学习笔记(数据绑定篇)
>
Next Post
WPF学习笔记(数据绑定篇3)