Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6540204
  • 博文数量: 915
  • 博客积分: 17977
  • 博客等级: 上将
  • 技术积分: 8846
  • 用 户 组: 普通用户
  • 注册时间: 2005-08-26 09:59
个人简介

一个好老好老的老程序员了。

文章分类

全部博文(915)

文章存档

2022年(9)

2021年(13)

2020年(10)

2019年(40)

2018年(88)

2017年(130)

2015年(5)

2014年(12)

2013年(41)

2012年(36)

2011年(272)

2010年(1)

2009年(53)

2008年(65)

2007年(47)

2006年(81)

2005年(12)

分类: Android平台

2017-10-06 21:09:32

数据绑定是一个神奇的功能,完全解耦UI,从支持的数据模型,数据移动来回你需要提供管道。但是,你在Xamarin.Forms中使用了大部分的绑定功能吗?在我们以前的介绍数据绑定和先进的数据结合柱的基础上,我会告诉你一些我们你应该使用的最强大的功能。

在编译XAML绑定
编译更快。这也意味着你在编译的时候得到的数据类型验证。第一个要求是要确保您已经启用XAML编译。真的很简单。添加这个组件标签以外的应用程序的命名空间。

using Xamarin.Forms.Xaml;
...
[assembly: XamlCompilation (XamlCompilationOptions.Compile)]
namespace ContosoAir
{
  ...
} 

然后,从编译绑定中获益,你需要 你的Xaml中指定x:DataType,通常在您绑定的孩子的最高级别或包装元素中。一个好的规则是保证在BindingContext同一级别的地方设置X:DataType。下面是一个示例页面,显示一个列表的处理。它使用了MVVM模式,所以当前页面的 BindingContext是一个叫做MyDeals的ObservableCollection的视图模型。


namespace ContosoAir.Clients.Models
{
    public class Deal
    {
        public int Id { get; set; }
        public string CityName { get { return ToName; } }
        public string CityImage { get { return ToName; } }
        public double Price { get; set; }
        public string FromName { get; set; }
        public string FromCode { get; set; }
        public string DepartTime { get; set; }
        public string ArrivalTime { get; set; }
        public string Hours { get; set; }
        public string ToName { get; set; }
        public string ToCode { get; set; }
        public int Stops { get; set; }
    }
} 

模型Deal是基础,并没有实现INotifyPropertyChanged.。以下你看到的集合,绑定到ListView 并且将 x:DataType设置到DataTemplate上。



...
    
    ...
    
        
            
                
            
        
    
  
...
 

XAMLC会生成访问属性的代码,并连接(在这种情况下) 到PropertyChanged。

注意xmlns参考支持而不是CLR命名空间的使用时,在相同的程序集中。

这个是 DealControl,在前面的代码显示,它只是一个简单的绑定引用。


  
  ...  ... 
 

你可以重新指定数据类型在你的视图层次结构中的任何一点。

OneWayToSource
当你希望你的绑定像羽毛一样轻的时候,只需要确保你的源在用户做出改变时被更新,请使用OneWayToSource模式。

OneWayToSource 在API文档中的定义如下:

表明结合应该只更改传播目标(的bindableobject)源(通常是视图模型)。这是主要用于只读bindableproperty值。

这是有用的当你输入字段,只和你想要的值反映在你的视图模型。

 

因为源没有问题的属性更改事件,这是非常有效的。另举一个例子,看看这个示例项目显示绑定控件之间的一道。

StringFormat
通过利用StringFormat绑定你很多内联灵活设置内容格式。下面是一些快速例子:

   

优化你的绑定

最新版的Xamarin.Forms,,2.4.0,,XAML数据绑定提供了最佳性能的日期。更新nugets你所有的项目今天试试这些小贴士。

记得去看看我们以前的文章和数据绑定,和我们优秀的文件指南:

阅读(1034) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~