.NET Conf 2017后初尝Xamarin Forms 3.0@Linux

   对很多.NET粉,.NET Conf 2017的东西估计提前一个月都熟悉了,Xamarin粉估计最大惊喜不是Xamarin Live Player, 也不是Xamarin.Forms混合NativeControl ,而是Xamarin.Forms 3.0,因为它融入到 Linux平台. Xamarin.Forms 跨平台,一次编写生成原生界面是在跨平台移动开发中很大的优势。从1.0 诞生开始,用XAML构建多平台原生界面就成为了我项目中必不可少的,也是每次我演讲必讲的话题。
       
       如果说大家寄望Xamarin.Forms有更大的进步空间或者会是能更高效的编写界面,和融入更多的原生控件。在5月Build,Xamarin就满足了大家。而这次给大家更多的惊喜莫过于Xamarin Forms可以进入Linux Desktop,整合Gtk Sharp让你更快速的完成跨Desktop的开发。更可喜的是它不再是PPT上的东西,而是可以把弄的好玩具。
       
       我趁着这个周末,亲自玩了下Xamarin.Forms 3.0 ,把一些经验分享给大家.
       1.学习资料:

       https://github.com/jsuarezruiz/forms-gtk-progress  这里是最官方的,也是最方便了解Xamarin.Forms.gtk的地方。现阶段Xamarin .Forms.gtk还在开发中,你通过这里可以关注更多咨询,也可以贡献一下代码。话说我也准备在这里做点贡献,将会在接下来的日子分享给大家了。
       https://github.com/jsuarezruiz/xamarin-forms-samples/tree/gtk  官方示例,是现阶段最好的教程。
       https://channel9.msdn.com/Events/dotnetConf/2017/T326  .NET Conf 2017介绍Xamarin.Forms 3.0 的视频
       2.开发环境
       在Linux上装好你的mono和MonoDevelopIDE(总有一天会叫Visual Studio for Linux), 如果你还不会,那就去http://www.mono-project.com/ 上面有教程。
       Nuget配置,由于现在Xamarin.Forms在很早的阶段,所以不存在在Nuget上,但你可以通过刚才提到的示例,做一个本地Nuget(Sample中Nuget 文件夹包含了Xamarin.Forms 3.0, Xamarin.Forms.GTK等新的包)。打开MonoDevelop通过Tools -> Add Custom Tool -> Nuget -> Source 引入。
       
       3. 开发,现在Windows/MacOS上创建一个Xamarin.Forms的项目(现在还不能在Linux上创建Xamarin.Forms项目,现在Xamarin.Forms.GTK项目还没有正式引入Xamarin.Forms的解决方案模版), 然后在Linux中打开,在创建好的项目中添加一个GTK#项目。
       
       并把Windows.cs和相关的User Interface文件夹对应的界面删除。

       接下来把解决方案内的Xamarin.Forms替换成3.0版本(如果你刚才添加Nuget成功,你可以看到下图的引用),并对创建的GTK#项目添加Xamarin.Forms引用

               

       最后要做的事是修改Program.cs      

  1. using System;  

  2. using Xamarin.Forms;  

  3. using Xamarin.Forms.Platform.GTK;  

  4. using XFGtk;  

  5.   

  6.   

  7. namespace XFGtk.Linux  

  8. {  

  9.     class MainClass  

  10.     {  

  11.         public static void Main(string[] args)  

  12.         {  

  13.             Gtk.Application.Init();  

  14.             Forms.Init();  

  15.   

  16.             var app = new App();  

  17.             var window = new FormsWindow();  

  18.             window.LoadApplication(app);  

  19.             window.SetApplicationTitle("Hello GTK");  

  20.             window.Show();  

  21.             Gtk.Application.Run();  

  22.         }  

  23.     }  

  24. }  

        
        看了下结果,自我感觉良好。
        回头再看看项目还是熟悉的味道,C# , XAML , MonoDevelop . All it is cool 
        

相关文章: 

  • “.Net 社区大会”(dotnetConf) 2017 Day 1 Keynote: .NET Everywhere

  • .NET Standard@Xamarin.Forms

  • 不可思议黑科技,Xamarin移动开发新时代

  • 是时候开始用C#快速开发移动应用了

原文地址:http://blog.csdn.net/kinfey/article/details/78078597


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/323472.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis单例、主从模式、sentinel以及集群的配置方式及优缺点对比

转载自 Redis单例、主从模式、sentinel以及集群的配置方式及优缺点对比 redis作为一种高效的缓存框架,使用是非常广泛的,在数据存储上,在运行时其将数据存储在内存中,以实现数据的高效读写,并且根据定制的持久化规则…

微信小程序中使用画布canvas实现动态心电图绘制

大家好,我是雄雄。 内容先知前言效果图实现代码前言 近期,接了个项目,三端(小程序、PC、公众号)同步开发,PC端没的问题,以前一直做的就是PC端,但是小程序和公众号之前没有做过&…

nssl1163-小x游世界树【树形dp,二次扫描和换根法】

正题 题目大意 一棵树,一条边的权是原本的权值减去出发点的加速。 求一个点使得这个点到所有点路径边权和最小。 解题思路 我们先求出以1为根时的答案 然后用换根法 我们从1转移到2,我们会发现 红色的部分的路径都减去的紫色的路径长度,蓝…

结构体跨函数应用(二)

#include<stdio.h> struct Student { int age;char sex; };int main(void){struct Student st;InputStudent(&st);printf("%d,%c",st.age,st.sex);}void InputStudent(struct Student *pstu) {(*pstu).age88;pstu->sexF;}老是出现警告&#xff0c;排查好…

ASP.NET Core依赖注入解读使用Autofac替代实现

1. 前言关于IoC模式&#xff08;控制反转&#xff09;和DI技术&#xff08;依赖注入&#xff09;&#xff0c;我们已经见过很多的探讨&#xff0c;这里就不再赘述了。比如说必看的Martin Fowler《IoC 容器和 Dependency Injection 模式》&#xff0c;相关资料链接都附于文章末尾…

jmeter如何进行一个简单的测试(超级详细,有图有文字,闭着眼都能成功)

大家好&#xff0c;我是雄雄。 内容先知前言软件获取开始测试1.新建线程组2.创建一个请求3.添加HTTP信息头4.开始测试5.查看请求情况前言 上头问题要服务器的配置&#xff0c;基于我们现在做的项目&#xff0c;需要安排别人去采购服务器&#xff0c;给出的消息是&#xff1a;2…

开封游(一)

今天去开封玩了一下&#xff0c;白天在路程上耽搁太多时间&#xff0c;主要在晚上玩的。终于到显示我米9夜景功能的时候了。 去了包公祠&#xff0c;西司夜市&#xff0c;鼓楼夜市。 下午先去了包公祠 下面是夜景了&#xff0c;特别的炫酷。 首先是西司夜市 进去的时候 这个…

C#中的两把双刃剑:抽象类和接口

问题出现&#xff1a;我们在使用C#的抽象类和接口的时候&#xff0c;往往会遇到以下类似的问题&#xff0c;大致归纳如下:(1)抽象类和接口有什么本质的区别和联系&#xff1f;(2)什么时候选择使用抽象类&#xff0c;然啥时候使用接口最恰当呢&#xff1f;(3)在项目中怎样使用才…

开封游(二)

短暂的永远浪漫&#xff0c;漫长换来不满。人就是这样&#xff0c;第一天是怀着期盼喜悦的心情来的&#xff0c;等到二天&#xff0c;被漫长的行程磨平心境后就再也不想出来旅游了。 总之第二天的心情只能用疲倦来概括。 本来愉悦的心情&#xff0c;而转折点是在吃完海底捞之…

.NetCore之下载文件

本篇将和大家分享的丝.NetCore下载文件&#xff0c;常见的下载有两种&#xff1a;A标签直接指向下载文件地址和post或get请求后台输出文件流的方式&#xff0c;本篇也将围绕这两种来分享&#xff1b;如果对您有好的帮助&#xff0c;请多多支持。允许站点不识别content-type下载…

jeecg-boot中如何修改自定义主题颜色

大家好&#xff0c;我是雄雄。 前言 今天第一次上老丈人家&#xff0c;哈哈哈&#xff0c;有点猝不及防&#xff0c;本来没准备去&#xff0c;结果正好在小区门口碰到&#xff0c;人家让我去&#xff0c;我就把后备箱里面的东西拿下来带着去的。 聊了几个小时&#xff0c;也还…

跨平台应用集成(在ASP.NET Core MVC 应用程序中集成 Microsoft Graph)

1谈一谈.NET 的跨平台终于要写到这一篇了。跨平台的支持可以说是 Office 365 平台在设计伊始就考虑的目标。我在前面的文章已经提到过了&#xff0c;Microsoft Graph 服务针对一些主流的开源平台&#xff08;主要用来做跨平台应用&#xff09;都有支持&#xff0c;例如 python,…

用指针完成函数参数的调用

#include<stdio.h>addUp(int a,int b,int c){ cab;printf("%d\n",c); return c;}main(){int c;addUp(6,5,c);printf("%d",c); }可以在函数中完成数字的加减但是发现无法再主函数中调用&#xff0c;是个初始值22&#xff0c;所有得想个办法将函数的值…

Java 8中Stream API的这些奇技淫巧!你都Get到了吗?

转载自 Java 8中Stream API的这些奇技淫巧&#xff01;你都Get到了吗&#xff1f; Stream简介 Java 8引入了全新的Stream API。这里的Stream和I/O流不同&#xff0c;它更像具有Iterable的集合类&#xff0c;但行为和集合类又有所不同。stream是对集合对象功能的增强&#x…

基于Office 365的随需应变业务应用平台

这是我去年10月底在微软技术大会&#xff08;Microsoft Ignite 2016) 上面的演讲主题&#xff0c;承蒙大家抬爱&#xff0c;也沾了前一场明星讲师的光&#xff0c;我记得会场几乎是满座。观众中既有IT部门的技术人员&#xff0c;也有业务部门的用户&#xff0c;也有少量的开发人…

jeecg中新建接口后报错404的解决方法

大家好&#xff0c;我是雄雄。 前言 最近项目中&#xff0c;一直用的是jeecg-boot的微服务版本&#xff0c;尤其是第一次用微服务&#xff0c;所以在用的过程中&#xff0c;各种问题层出不穷&#xff0c;我们就在边学习边应用的道路上缓缓前进。 索性现在项目已经做的差不多了…

一分钟理解Java公平锁与非公平锁

转载自 一分钟理解Java公平锁与非公平锁 和朋友聊天他提到&#xff1a;ReentrantLock 的构造函数可以传递一个 bool 数据&#xff0c;true 时构造的是“公平锁”、false 时构造的是“非公平锁”。我的印象中锁是不区分类型的&#xff0c;所以认为这应该是 Java 发明的概念&…

为什么你需要将代码迁移到ASP.NET Core 2.0?

随着 .NET Core 2.0 的发布&#xff0c;.NET 开源跨平台迎来了新的时代。开发者们可以选择使用命令行、个人喜好的文本编辑器、Visual Studio 2017 15.3 和 Visual Studio Code 来开发自己的 .NET Core 2.0 项目。同时&#xff0c;微软 .NET 开发工具组也宣布了 ASP.NET Core 2…

typedef用法

#include<stdio.h> typedef struct Student {int age;int score;}St; int main(){St st{200,100};//等价于 struct Student st 直接命名&#xff0c;省略/很多不必要步骤 printf("%d",st.age);}typedef的核心在于指针而不是仅仅简化了结构 #include<stdi…

jeecg-boot中如何放开接口路由

大家好&#xff0c;我是雄雄。 前言 今天是国庆假期的第5天了&#xff0c;7天的时间&#xff0c;感觉过的挺快&#xff0c;前三天都在下雨&#xff0c;后四天降温冻的瑟瑟发抖。 这次假期完事儿了之后就到元旦&#xff0c;春节了&#xff0c;得好好的珍惜。 今天介绍一下&…