Xamarin 跨平台处理:

C#:

if (Device.OS == TargetPlatform.Android)
{
Code……
}
else if (Device.OS == TargetPlatform.iOS)
{
Code……
} Padding = new OnPlatform<Thickness>
{
Android = new Thickness(0),
iOS = new Thickness(0,20,0,0)
};
 

Xaml:

<ContentPage.Padding>
<OnPlatformx:TypeArguments="Thickness"
iOS = "0,20,0,0"
Android = "0" />
</ContentPage.Padding>
 

Thickness 官方解释:

指定粗细

MarginPadding属性的类型都是Thickness。 有三种可能的创建时Thickness结构:

  • 创建Thickness结构定义的单个统一值。 单个值应用于左侧、 顶部、 右侧和底部均带有的元素。
  • 创建Thickness水平和垂直值所定义的结构。 所需应用到左侧和右侧的元素,与所需应用于元素的顶部和底部旁边的垂直值进行水平值。
  • 创建Thickness由适用于在左侧、 顶部、 右侧和底部均带有的元素的四个非重复值的结构。

Xamarin Compilation 编译时校验Xaml语法:

1:校验当前对应Xaml档案:

[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class MainPage

2:校验整个 namespace :

[assembly:XamlCompilation(XamlCompilationOptions.Compile)]

namespace App3
 

Xamarin 设置MainPage:

//设置为导航页
MainPage = new NavigationPage(new MainPage()); //Push 新页面
await Navigation.PushAsync(new HelloXamlPage()); //主页面
MainPage = new new MainPage();
 

Xamarin StaskLayout:

StackLayout默认为垂直布局,类似于Android的LinearLayout,其中最常用的布局属性:

//水平
HorizontalOptions="Center"
//垂直
VerticalOptions="Center"
 

在C#代码中声明StaskLayout,添加Label标签,并加载到PageContent中:

var stacklayout = new StackLayout
{
HorizontalOptions = LayoutOptions.Center,
VerticalOptions = LayoutOptions.Center
};
//创建Label添加到StackLayout中 stacklayout.Children.Add(new Label { Text = "Label1" });
//将stacklayout加载到Page中 Content = stacklayout;

可以使用 Spacing 来设置间距:

<StaskLayoutSpacing = "10"></StaskLayout >

Xamarin GridLayout:

在 Xaml 中定义GridLayout代码如下:
 
<Grid>
<Grid.RowDefinitions>
<RowDefinitionHeight="*"/>
<RowDefinitionHeight="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinitionWidth="*"/>
<ColumnDefinitionWidth="*"/>
</Grid.ColumnDefinitions>
<LabelText="Top Left"BackgroundColor="Red"Grid.Row="0"Grid.Column="0"/>
<LabelText="Top right"BackgroundColor="Green"Grid.Row="0"Grid.Column="1"/>
<LabelText="bottom Left"BackgroundColor="Blue"Grid.Row="1"Grid.Column="0"/>
<LabelText="bottom right"BackgroundColor="Yellow"Grid.Row="1"Grid.Column="1"/>
</Grid>
 

在 定义行中 RowDefinitions 中指定数量与高度,在定义列ColumnDefinitions 中声明宽度。

在需要添加到Grid中的控件中指定坐标 Grid.Row Grid.Column 定义位置。

var grid = new Grid();

            grid.RowDefinitions.Add(new RowDefinition
{
Height = new GridLength(1,GridUnitType.Star)
});
grid.RowDefinitions.Add(new RowDefinition
{
Height = new GridLength(1, GridUnitType.Star)
});
grid.ColumnDefinitions.Add(new ColumnDefinition
{
Width = new GridLength(1,GridUnitType.Star)
});
 

C#创建Grid,可以使用 grid.Children.Add(new ……,row,col) 方式添加控件。

再来说 设定宽高的种方式:

1 : * == Star 可使用Auto,按比例划分。

2 : Absolute 绝对定位,可以使用px类似单位指定宽高。

Xamarin Navigation页面跳转:

官方关系图:

  

在添加新页面的时候PUSH,返回 POP。

点击到下一页和返回上一页Demo:

Click 事件:

<Button Text="Click Me" Clicked="Button_Clicked" />

PUSH :

async private void Button_Clicked(object sender, EventArgs e)
{
await Navigation.PushModalAsync(new Page1());
}
 

POP :

async privatevoidButton_Clicked(object sender, EventArgs e)
{
await Navigation.PopModalAsync();
}
 

如果在App中声明 如 : MainPage main = new NavigationPage(new Main());

Navigation.PushModalAsync 去掉 Modal。

Xamarin 基础知识的更多相关文章

  1. 【Xamarin开发 Android 系列 4】 Android 基础知识

    原文:[Xamarin开发 Android 系列 4] Android 基础知识 什么是Android? Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Li ...

  2. 【Xamarin.Forms 2】App基础知识与App启动

    系列目录 1.[Xamarin.Forms 1]App的创建与运行 引言 本篇文章将介绍Xamarin.Forms中 App 基础知识和 App的启动. 开发环境 Visual Studio 2019 ...

  3. .NET面试题系列[1] - .NET框架基础知识(1)

    很明显,CLS是CTS的一个子集,而且是最小的子集. - 张子阳 .NET框架基础知识(1) 参考资料: http://www.tracefact.net/CLR-and-Framework/DotN ...

  4. .NET Framework基础知识总结

    之前给大家总结了java的面试几次技巧总结,同学们看了觉得还是不错,能够得到大家的认可,感觉还是挺不错的.现在又有同学来想小编索要.NET面试的总结了,好吧.谁让小编这么好呢!以下是.NET面试之框架 ...

  5. RabbitMQ基础知识

    RabbitMQ基础知识 一.背景 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然 ...

  6. Java基础知识(壹)

    写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...

  7. selenium自动化基础知识

    什么是自动化测试? 自动化测试分为:功能自动化和性能自动化 功能自动化即使用计算机通过编码的方式来替代手工测试,完成一些重复性比较高的测试,解放测试人员的测试压力.同时,如果系统有不份模块更改后,只要 ...

  8. [SQL] SQL 基础知识梳理(一)- 数据库与 SQL

    SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...

  9. [SQL] SQL 基础知识梳理(二) - 查询基础

    SQL 基础知识梳理(二) - 查询基础 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5904824.html 序 这是<SQL 基础知识梳理( ...

随机推荐

  1. Python的空行

    函数之间或类的方法之间用空行分隔,表示一段新的代码的开始.类和函数入口之间也用一行空行分隔,以突出函数入口的开始. 空行与代码缩进不同,空行并不是Python语法的一部分.书写时不插入空行,Pytho ...

  2. c++学习书籍推荐《C++语言的设计与演化》下载

    百度云及其他网盘下载地址:点我 编辑推荐 <C++语言的设计与演化>由C++语言的设计者Bjarne Stroustrup著就,是一本阐述C++语言的设计及开发过程的无可争辩的内情手册.S ...

  3. CDQZ集训DAY8 日记

    又一次翻车…… 先提一句昨晚的事.昨天晚上身后一帮成都七中的人用十分戏谑的语气交出了达哥的名字,看着NOI2017的获奖名单,如果他们真的是在嘲笑的话,真的挺想上去干他们一顿的…… 上午考试第一题一脸 ...

  4. GitHub & Git 的学习之始

    唉,简单地说,感受只有四个字:蓝瘦香菇. 我的GitHub地址为: https://github.com/LinJingYun  (这个,,我不知道具体从哪里找到自己地址啊) 接下来说一下我对git和 ...

  5. 【题解】导游-C++

    Description 宁波市的中小学生们在镇海中学参加程序设计比赛之余,热情的主办方邀请同学们参观镇海中学内的各处景点,已 知镇海中学内共有n处景点.现在有n位该校的学生志愿承担导游和讲解任务.每个 ...

  6. ASP.NET CORE配置用户密码验证

    在 class Startup 中配置 public void ConfigureServices(IServiceCollection services) { services.AddDbConte ...

  7. Jquery UI sortable

    所有的事件回调函数都有两个参数:event和ui,浏览器自有event对象,和经过封装的ui对象 ui.helper - 表示sortable元素的JQuery对象,通常是当前元素的克隆对象 ui.p ...

  8. VS2010中GetMenu()和GetSubMenu(0)为NULL引发异常的解决方法 及添加方法

    对于前面问题的分析:来源于http://blog.163.com/yuyang_tech/blog/static/216050083201211144120401/ 解决方法1: //来源:http: ...

  9. [JavaWeb] Ubuntu下载eclipse for ee

    进入网站进行下载 https://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/2019- ...

  10. 洛谷P2384 最短路 题解

    题目简叙: 请你求出从1到n的最短路径,其中最短路径☞这条路经过的边的权值的乘积. 题目分析: 很显然,这也是一道经典的单元最短路问题,首先我们可以考虑使用Floyd,显然,这是一个比较无脑简单的最短 ...