彩票走势图

【更新】跨平台/原生支持UI的工具包Xamarin.Forms v2.1.0-pre1发布

原创|产品更新|编辑:黄竹雯|2016-02-06 11:07:49.000|阅读 211 次

概述:UI工具包Xamarin.Forms更新至v2.1.0-pre1,新版本新增ControlTemplates、DataTemplateSelector、Effects,并且改进了HasUnevenRows、ListView等,还修复了很多操作方面的问题。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

Xamarin Forms 是一个高效创建跨平台用户界面的库 。通过Xamarin Forms 可以一次编码生成基于主流移动平台(iOS, Android, Windows Phone)的应用界面。和HTML 5 不同, 它是一套原生的界面解决方案,这意味着通过Xamarin Forms 渲染的界面是与底层API 紧密相连, 那你可以结合诸如iOS 中的Core Motion , PassKit 还有StoreKit 这些API 使用 ,也可以使用诸如NFC / Google Play Service 的Android API ,当然少不了Windows Phone 的Tiles 。

Xamarin Forms 通过一次编码,生成多平台界面。假若你做的工作涉及到三个平台,那你会对重重复复的界面逻辑工作厌烦,Xamarin Forms 真的是一个不错的解决方案。使用 Xamarin Forms,你可以通过C#硬编码方式去架构你的界面,还有你可以通过XAML方式去构建。

具体更新内容如下:

新增:

ControlTemplates

ControlTemplates 将在2.1.0版本中进行介绍,包括以下类型:

  • ContentPage
  • ContentView
  • TemplatedPage
  • TemplatedView

TemplatedPage和TemplatedView现在作为ContentPage和ContentView的基础类别。ControlTemplates可以用来定义Control或Page的视觉外观,同时可以清晰地分辨视觉层次结构和Content本身。ControlTemplates可以通过应用Style来极大地扩张在Xamarin.Forms的主题功能。

随着ControlTemplates ,引进了TemplateBindings的概念。TemplateBindings运行起来和正常的Bindings相同,不论如何他们的Source都是自动设置目标的拥有ControlTemplate的父视图。超出ControlTemplate 的范围使用TemplateBinding暂不支持。

DataTemplateSelector

IDataTemplateSelectors允许在ListView.ItemsSource每项运行时选择DataTemplate。

用法:

class MyDataTemplateSelector : DataTemplateSelector
{
  public MyDataTemplateSelector ()
  {
    // Retain instances!
    this.templateOne = new DataTemplate (typeof (ViewA));
    this.templateTwo = new DataTemplate (typeof (ViewB));
  }

  protected override DataTemplate OnSelectTemplate (object item, BindableObject container)
  {
    if (item is double)
      return this.templateOne;
    return this.templateTwo;
  }

  private readonly DataTemplate templateOne;
  private readonly DataTemplate templateTwo;
}

DataTemplateSelectors有以下限制:

  • 在Android上每个ListView不超过20个模板
  • 如果在多次查询的情况下,DataTemplateSelector的子类必须始终返回相同数据的相同模板
  • DataTemplateSelector不能返回另一个DataTemplateSelector
  • DataTemplateSelector不能返回每次调用DataTemplate的新实例,而是必须返回相同的实例。不这样做将会不可避免地禁用虚拟化并且导致巨大的内存泄漏。请千万注意。

Effects

Effects提供了一个简单的方法来自定义控件的本机外观和感觉,而无需求助于一个完整的Custom Renderer。您可以使用这些来自定义本地控件,例如,下面的Effect就显示了如何在iOS上创建一个Border effect,这个effect可以在控件上设置2像素紫色轮廓:

// located inside iOS specific codebase
public class BorderEffect : PlatformEffect
{
  protected override void OnAttached ()
  {
    Control.Layer.BorderColor = UIColor.Purple.CGColor;
    Control.Layer.BorderWidth = 2;
  }

  protected override void OnDetached ()
  {
    Control.Layer.BorderWidth = 0;
  }
}

应用这种effect,你只需要通过IList Effects集合附加在Element上。这是一个简单得多的方式用本机触动来微调你的用户界面。

改进:

  • 支持HasUnevenRows的动态分级
  • 现在Windows已经可以支持ListView Virtualization
  • 不再支持并且弃用Create()BindableProperty的通用版本
  • 在WP8和WinRT上的输入/编辑更新现在与其他平台一致

修复:

  • 修复Windows Phone Editor控件黑色背景配黑色文本的问题,当正在编辑时背景色会变为白色
  • [Win Phone/winrt] Progress Bar在列表视图项不工作的问题
  • GroupHeaders在Windows Phone和WINRT不延展的问题
  • Entry控件的背景颜色应用于填充的问题
  • (Android)OnAppearing在弹出模态页面时不在上一页显示
  • 其他一些小的修复

购买最新版Xamarin.Forms<>,即可拥有最新正版授权!


标签:移动开发跨平台UI界面用户界面控件C#

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn

文章转载自:慧都控件网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP