阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

微软推出 Common XAML UI

  • 2014-04-11
  • 本文字数:1005 字

    阅读完需:约 3 分钟

在.NET 开发人员中间,一直有人抱怨基于 XAML 的不同用户界面种类太多。该问题开始于 Silverlight,它有一套与 WPF 类似但不同的控件。Silverlight for Windows Phone 增加了第三套,而 XAML for WinRT 则增加了第四套。

在 4 月 2 日的 Build 主题演讲中,我们听说微软最终已经开始了整合过程,推出了 Common XAML UI。该 UI 框架基于 XAML for WinRT,允许同样的 UI 代码在手机、平板电脑、台式电脑、最终在 Xbox One 上共享。

Common UI 的基础是一个称为“共享项目”的新项目类型。这是 Visual Studio 的一个新概念,其工作方式与可移植类库有很大的不同。一个共享项目不能单独编译成 DLL 或 EXE。相反,它会在构建时合并到一个或多个传统的项目类型中。传统项目的非正式名称为“项目头(project heads)”。

面板、按钮、文本框 / 按钮等核心基元在 Windows 和 Windows Phone 上将会有相同的行为。Hub、AppBar/CommandBar、日期 / 时间选择器、ListView、浮出控件和媒体等高级基元在两个平台上将会有相同的 API,但行为不同。Ads SDK 在两个平台上也有共用的 API 签名,但也是行为不同。

需要注意的是,部分功能会悄无声息地失效。例如,如果在 CommandBar 中有太多的按钮,那么 Windows Phone 将只渲染前面的几个。

虽然许多控件可以根据屏幕尺寸的不同伸缩,但有时候,开发人员需要针对某些设备定制控件的行为。一种实现方式是使用特定于平台的自定义控件。共享控件可以引用这些特定于平台的自定义控件,只要控件在每个项目头里有正确的名称。

提高代码重用的另一种选择是在后台代码中使用条件编译和#if def。从这个意义上讲,它就像在项目之间使用软链接共享源代码文件的经典方式。

资源文件提供了定制用户体验的第三种方式,用法与本地使用相同。以命令栏按钮为例,它们如何能按照预期在手机上小写,在台式电脑上首字母大写。

虽然大部分 API 现在可以共享,但有些特性并不是在所有平台都可用。最值得注意的有:

仅与于 Windows 平台的 API

  • SearchBox
  • Settings Flyout

仅用于 Windows Phone 平台的 API

  • Pivot
  • AutoSuggestBox
  • ContentDialog
  • Maps
  • System Chrome
  • Progress area, in-call UI

Windows 和 Windows Phone 的后退按钮行为不同,因此可能需要围绕它们做些自定义工作。另外,有必要针对文件选择器、共享和设置编写特定于平台的代码。

Visual Studio 2013 Update 2 的所有版本都提供了 Common XAML 和 Universal Apps。

查看英文原文:**** Introducing Common XAML UI

2014-04-11 21:431673
用户头像

发布了 256 篇内容, 共 81.6 次阅读, 收获喜欢 11 次。

关注

评论

发布
暂无评论
发现更多内容

Python程序性能分析和火焰图

ElvinYang

每个人都应该知道的性能参数

ElvinYang

Try-Catch包裹的代码异常后,竟然导致了产线事务回滚!

牧码哥

Java spring 事务

你的团队属于部落的哪个阶段?

Yanel 说敏捷产品

敏捷 敏捷开发 敏捷精髓

如何让团队产生“多米诺骨牌”效应?

Yanel 说敏捷产品

项目管理 敏捷 敏捷开发 敏捷精髓

接口限流算法有哪些,看完这篇又能和面试官互扯了~

不才陈某

Java 分布式 后端

功不唐捐

Janenesome

读书笔记 思考 坚持

Git clone过慢问题

JDoe

git

Java 为什么需要包装类

Rayjun

Java

医院陪护5天的四点感受

赵新龙

身心健康 医院

目光聚集之处,金钱必将追随

Tom

学习 个人成长 思考 读书

【解析+示例】2种方法,通过SpreadJS在前端实现甘特图

葡萄城技术团队

大前端 甘特图 SpreadJS 表格控件

工具集系列|值得收藏的几个免费在线学习国外网站

一尘观世界

学习 工具 网站 提升

回"疫"录(12):一“罩”难求

小天同学

疫情 回忆录 现实纪录 纪实

从技术层面理解对于区块链技术的10.24集体学习讲话

Tux Hu

区块链 智能合约 以太坊 加密货币 去中心化网络

追光逐影:读《我们这一代》

北风

认识数据产品经理(二 数据产品经理的稀缺性)

马踏飞机747

大数据 互联网 数据分析 产品经理

ShedLock:一个轻量级的定时任务协调组件

kk

定时任务 shedlock

ITerm2 + Oh my ZSH + Powerlevel10k

JDoe

配置

良好的工作习惯——及时存档、备份

小匚

工作效率

带你吃透原型设计

Yanel 说敏捷产品

产品 产品经理 产品设计 产品开发 产品推荐

Linux学习-2020.05.11

Flychen

如何高效阅读

ElvinYang

NIO 看破也说破(三)—— 不同的IO模型

小眼睛聊技术

Java 学习 深度思考 程序员 架构

游戏夜读 | 如何制作互动剧?

game1night

你真的懂"看板文化"么?

Yanel 说敏捷产品

敏捷 敏捷开发 敏捷精髓

危机过后,「表格文档协同」需要具备什么能力?

葡萄城技术团队

大前端 开发者工具 Excel

DDD 实践手册(6. Bounded Context - 限界上下文)

Joshua

企业架构 设计模式 领域驱动设计 DDD 架构模式

用Go替代Python在生产环境中进行数据分析

良少

人工智能 大数据 数据分析 pandas Go 语言

错过了初恋,别错过WebFlux

稻草鸟人

stream Spring5 WebFlux Reactive

也谈程序员的核心竞争力

我心依然

学习 程序员 竞争力 独立思考 清晰表达

微软推出Common XAML UI_语言 & 开发_Jonathan Allen_InfoQ精选文章