【Xamarin.Forms】数据绑定的力量你可能无法使用(还)

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

数据绑定是一个神奇的功能,完全解耦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你所有的项目今天试试这些小贴士。

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

目录
相关文章
C# Xamarin数据绑定入门基础
C# Xamarin数据绑定入门基础
168 0
C# Xamarin数据绑定入门基础
|
开发工具 Android开发 iOS开发
使用xamarin开发Android、iOS报错failed to open directory: 系统找不到指定的文件
使用vs2019学习xamarin时,创建新程序。使用模拟器真机等测试都报错如下图错误: ![请在此添加图片描述](https://developer-private-1258344699.cos.ap-guangzhou.myqcloud.com/column/article/5877188/20231030-de8ce5fd.png?x-cos-security-token=r4KyZDEowPT0kGTL0LqE8EnwfN1Nzexadb05dcffed3939ff8d7591c528c01706nvpGSE93QwHpZM8NwhJNTZctNRQa0l3KDhEnqj8P7d8t
118 0
使用xamarin开发Android、iOS报错failed to open directory: 系统找不到指定的文件
|
Java C# Android开发
.NET(WinCE、WM)开发转Android开发 ——Xamarin和Smobiler对比
WinCE从1995年诞生至今,已有20多年的发展历史,行业成熟方案覆盖范围广,从车载、工控、手持机都有涉及,且方案成熟。 近些年,Android以后来居上的态势,逐渐渗透至各行业领域,硬件手持大厂也把产品线重心向Android手持迁移,基于Android的行业解决方案越来越成熟,WinCE的开发人才流失,在WinCE解决方案上吃老本的企业寻求转型。
|
Web App开发 测试技术 Android开发
xamarin开发android收集的一些工具
原文:xamarin开发android收集的一些工具 xamarin开发android收集的一些工具 工欲善其事,必先利其器,从16年下半年开始做xamarin相关的开发,平时使用的一些工具和google插件给大家分享一下,都有下载地址,持续更新。
1535 0
|
XML Android开发 数据格式
Xamarin android沉浸式状态栏
虽然关于android ”沉浸式“状态栏有很多博客介绍过,从小菜到大神无一例外。我第一次看到这种”沉浸“式的效果我也以为真的是这么叫,然而根本不是这么回事,完全是人云亦云。它真正的学名应该叫“透明状态栏”。
2143 0
|
存储 数据库 Android开发
Xamarin android使用Sqlite做本地存储数据库
android使用Sqlite做本地存储非常常见(打个比方就像是浏览器要做本地存储使用LocalStorage,貌似不是很恰当,大概就是这个意思)。 SQLite 是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。
1369 0
|
前端开发 Android开发
Xamarin android中使用signalr实现即时通讯
前面几天也写了一些signalr的例子,不过都是在Web端,今天我就来实践一下如何在xamarin android中使用signalr,刚好工作中也用到了这个,也算是总结一下学到的东西吧,希望能帮助你们,更快地熟悉使用xamarin android进行即时通讯。
1444 0
|
XML Android开发 数据格式
Xamarin android spinner的使用方法
xamarin  android spinner的如何使用呢,大多数web开发人员经常会听到DropDownList 和Combobox 这种下拉选择框,spinner 的意思差不多,有道词典一下意思是“下拉列表”、“台湾斯普”,“下拉列表组件”,“微调控件”。
1589 0
|
XML Java Android开发
Xamarin android如何反编译apk文件
Xamarin android 如何反编译 apk文件 这里推荐一款XamarinAndroid开发的小游戏,撸棍英雄,游戏很简单,的确的是有点大。等一下我们来翻翻译这个Xamarin Android 开发的小游戏 下载链接:http://shouji.
1380 0
|
定位技术 开发工具 Android开发
Xamarin android如何调用百度地图入门示例(一)
在Xamarin android如何调用百度地图呢? 首先我们要区分清楚,百度地图这是一个广泛的概念,很多刚刚接触这个名词”百度地图api”,的确是泛泛而谈,我们来看一下百度地图的官网: android上使用百度地图的有Android地图SDK,定位SDK,导航SDK,全景SDK.
1503 0
下一篇
无影云桌面