Xamarin 基礎知識


 

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 官方解釋:

 

指定粗細

Margin Padding 屬性的類型都是 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。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM