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. OSI参考模型---网络基础篇(1)

    什么是网络 网络就是将分布在不同地理位置,具有独立功能的终端(一切联网的设备都叫终端:例如电脑,手机,智能家电等等联网的设备),通过通信线路(双绞线.光纤.电话线等等)和通信设备(例如:交换机.路由器 ...

  2. ASP.Net Core2.1 秒杀项目一步一步实现CI/CD系列一

    前言:有一段时间没写博客了,那是因为博主菜,需要学习和准备,这不带来了本系列的文章.在这里我把学习的心得分享出来,有些点理解的也不是太到位,希望大佬们能多多给点建议和指导.下半年就把这个系列的文章写完 ...

  3. CSDN,CNBLOGS博客文章一键转载插件(转载测试)

    插件地址: https://greasyfork.org/zh-CN/scripts/381053-csdn%E5%8D%9A%E5%AE%A2%E6%96%87%E7%AB%A0%E8%BD%AC% ...

  4. 大数据 SQL Boy 脱坑指南

    不可否认的是 SQL 是一个伟大的发明,它让增删改查的操作更加地便捷化,而且 SQL 的学习成本相对其他编程语言来说较低,被逼到会写 SQL 的运营和产品我都见过不少... 大数据行业跟 SQL 更是 ...

  5. Android studio 3.4.1 使用 bootstrap 中的组件实例

    电脑环境: ubuntu18.04 + Android studio 3.4.1 + bootsrtap4 Android studio中板式设计主要使用的 XML 布局文件,而在bootstrap中 ...

  6. visual studio 容器工具首次加载太慢 vsdbg\vs2017u5 exists, deleting 的解决方案

    ========== 正在准备容器 ========== 正在准备 Docker 容器... C:\Windows\System32\WindowsPowerShell\v1.\powershell. ...

  7. dubbo框架设计学习

    1.整体设计 (1)架构图 图例说明: 图中左边淡蓝背景的为服务消费方使用的接口,右边淡绿色背景的为服务提供方使用的接口,位于中轴线上的为双方都用到的接口. 图中从下至上分为十层,各层均为单向依赖,右 ...

  8. 个人永久性免费-Excel催化剂功能第104波-批量选择多种类型的图形对象

    在Excel的日常操作过程中,选择绝对是一个高频的操作,之前开发过一些快速选择单元格区域的辅助功能,除了单元格区域,Excel强大之处在于,类似PhotoShop那般可以存放多种图形,并且有图层先后顺 ...

  9. 个人永久性免费-Excel催化剂功能第25波-小白适用的文本处理功能

    翻看各大插件,都不约而同地出现系列文本处理的功能,自己在使用Excel过程中,在临时性的需求时,也会用上这几种文本处理,但仅适用于小范围的使用,使用这些功能不是数据处理的正确的之道,数据处理的核心需求 ...

  10. C#3.0新增功能06 对象和集合初始值设定项

    连载目录    [已更新最新开发文章,点击查看详细] 使用 C# 可以在单条语句中实例化对象或集合并执行成员分配. 对象初始值设定项 使用对象初始值设定项,你可以在创建对象时向对象的任何可访问字段或属 ...