对很多.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
using System;
using Xamarin.Forms;
using Xamarin.Forms.Platform.GTK;
using XFGtk;
namespace XFGtk.Linux
{
class MainClass
{
public static void Main(string[] args)
{
Gtk.Application.Init();
Forms.Init();
var app = new App();
var window = new FormsWindow();
window.LoadApplication(app);
window.SetApplicationTitle("Hello GTK");
window.Show();
Gtk.Application.Run();
}
}
}
看了下结果,自我感觉良好。
回头再看看项目还是熟悉的味道,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跨平台或扫描二维码关注