Windows phone 7之頁面布局

Windows phone的頁面布局方式一般是依賴布局控件實現的,而布局控件有三種Grid,StackPanel和Canvas

Grid是網格布局方式,相當于一個表格,有行和列,新建一個Windows phone項目,打開MainPage.xaml,頁面呈現內容的核心代碼如下

<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>

<!--TitlePanel contains the name of the application and page title-->
<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
<TextBlock x:Name="ApplicationTitle" Text="MY APPLICATION" Style="{StaticResource PhoneTextNormalStyle}"/>
<TextBlock x:Name="PageTitle" Text="page name" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
</StackPanel>

<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"></Grid>
</Grid>

看到代碼中用的了兩種布局方式Grid和StackPanel,這也是windows phone最常用的兩種布局方式,在布局中Canvas不常用,當然這不代表他沒用,在一些xaml繪制logo,那Canvas在核實不過了,Grid和StackPanel無法將之取代。

1、Grid

看下面的代碼

<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>

<!--TitlePanel contains the name of the application and page title-->
<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
<TextBlock x:Name="ApplicationTitle" Text="MY APPLICATION" Style="{StaticResource PhoneTextNormalStyle}"/>
<TextBlock x:Name="PageTitle" Text="Grid" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
</StackPanel>

<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Text="left top"/>
<TextBlock Grid.Column="1" Text="center top"/>
<TextBlock Grid.Column="2" Text="right top"/>
<TextBlock Grid.Row="1" Text="left center"/>
<TextBlock Grid.Row="1" Grid.Column="1" Text="center center"/>
<TextBlock Grid.Row="1" Grid.Column="2" Text="right center"/>
<TextBlock Grid.Row="2" Text="left bottom"/>
<TextBlock Grid.Row="2" Grid.Column="1" Text="center bottom"/>
<TextBlock Grid.Row="2" Grid.Column="2" Text="right bottom"/>
</Grid>
</Grid>

運行效果如下圖

在name為ContentPanel的Grid中加入三行三列,<Grid.RowDefinitions>也是一個容器,在內部放幾個RowDefinition,就表明Grid有幾行,<Grid.ColumnDefinitions>中放幾個ColumnDefinition就有幾列看
還有就是,RowDefinition只是用來定義列的,列中的內容不是直接放在RowDefinition標簽下,而是放在Grid標簽下,通過Grid.Row和Grid.Column來定義內容屬于哪一行哪一列,默認是第0行,第0列,所以如果是放在0行Grid.Row可以不用寫,如果是放在0列Grid.Column不用寫,就想上面的代碼。

Grid中RowDefinition能夠定義Height屬性,表示高度,不能定義寬度,ColumnDefinition能夠定義Width,表示寬度,不能定義高度,所以最終的寬度和高度是兩者共同決定的

Height和Width屬性是枚舉類型,可以有三個選項,填入具體是,就是固定的高或寬,填入Auto關鍵字,就是根據行和咧中的子空間的高和寬決定,一最大的為準,填入星號*,就是占據剩余部分,比如我第一行,Height填入100,升入兩行詩*,則表明第一行為100,二三行平分Grid剩余的部分,比如Grid的Height是500,那剩余的部分就是400,而三行每行200.

實際中很少出現特別正規的行列分布,往往有的子控件要跨行或跨列,Grid.RowSpan表示跨行,Grid.ColumnSpan表示跨列

看下面的代碼

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Grid.RowSpan="2" VerticalAlignment="Center" Text="left top"/>
<TextBlock Grid.Column="1" Text="center top"/>
<TextBlock Grid.Column="2" Text="right top"/>
<TextBlock Grid.Row="1" Grid.Column="1" Text="center center"/>
<TextBlock Grid.Row="1" Grid.Column="2" Text="right center"/>
<TextBlock Grid.Row="2" Text="left bottom"/>
<TextBlock Grid.Row="2" Grid.ColumnSpan="2" HorizontalAlignment="Center" Grid.Column="1" Text="center bottom"/>
</Grid>

運行效果如下圖

2、StackPanel

StackPanel是一個比較簡單的容器,可以將子控件進行橫排或豎排(默認是豎排),不能同時橫排和豎排,如果是想實現橫排和豎排一起出現的效果,就要使用子控件嵌套活著布局控件嵌套

Orientation屬性是一個枚舉類型,Horizontal表示橫排,Vertical表示豎排

看下面的代碼和運行效果

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<Grid.RowDefinitions>
<RowDefinition Height="100"/>
<RowDefinition/>
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal">
<TextBlock Text="left" Width="100"/>
<TextBlock Text="center" Width="100"/>
<TextBlock Text="right" Width="100"/>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="1">
<TextBlock Text="top" Height="100"/>
<TextBlock Text="center" Height="100"/>
<TextBlock Text="bottom" Height="100"/>
</StackPanel>
</Grid>

3、Canvas

Canvas是畫布布局方式,是一個絕對定位的布局控件,他是以左上角(0,0)為標準,將子控件擺放到其中,用Cancas.eft和Cancas.Right決定距離左上角的偏移量,可以是負值,如果出現控件重疊的狀況可以通過Canvas.Zindex屬性控制,Zindex大的會覆蓋小的

看下面代碼和運行效果

<Canvas>
<TextBlock Canvas.Left="0" Canvas.Top="10" Text="textblock1"/>
<StackPanel Canvas.ZIndex="2" Canvas.Left="0" Canvas.Top="10" Background="Red">
<TextBlock Text="hello"/>
</StackPanel>
<TextBlock Canvas.Left="100" Canvas.Top="100" Text="textblock2"/>
<TextBlock Canvas.Left="300" Canvas.Top="300" Text="textblock3"/>
</Canvas>

另外,每個控件都有布局的屬性,Margin之類的接下來的文章中將介紹不同控件的用法和屬性,會介紹布局屬性,今天的內容中,有關布局屬性,不是很明白的童鞋不用急

?

我的新浪微博昵稱是“@馬蔬菜”,希望大家多關注,謝謝

?

轉載于:https://www.cnblogs.com/xiaogeer/archive/2012/04/03/2430749.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/260892.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/260892.shtml
英文地址,請注明出處:http://en.pswp.cn/news/260892.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

蘋果電腦刪除軟件_軟件自動開啟很煩人?如何徹底關掉開機自動開啟的應用程序...

使用Mac的小伙伴有沒有這樣的煩惱&#xff0c;電腦一開機&#xff0c;一堆煩人的軟件就自動開啟了&#xff0c;讓人很懊惱&#xff0c;如何才能徹底關掉開機自動開啟的應用程序&#xff1f;mac開機啟動項怎么設置&#xff1f;開機啟動項要怎么禁止&#xff1f;今天就帶大家解決…

UVALive2678子序列

UVALive2678 http://122.207.68.93:9090/csuacmtrain/problem/viewProblem.action?id453 【題目描述】&#xff1a;n個正整數組成的序列。給定整數S&#xff0c;求長度最短的連續序列&#xff0c;使他們的和大于等于S。 【算法分析】&#xff1a; 【二分】&#xff1a; 全是…

Jupyter notebook 使用過程中的一些小技巧總結

Jupyter notebook 小技巧 這是自己使用Jupyter notebook 的過程&#xff0c;遇到的一些問題&#xff0c;還有一些使用的小技巧&#xff0c;希望可以幫且大家。會不定時更新 code 轉 markdown&#xff1a; 按鍵 M code 轉 markdown&#xff1a; 按鍵 Y 換行&#xff1a;打完一…

IOS 文件讀取4種方法 轉字符串 和data

//第一種方法&#xff1a; NSFileManager實例方法讀取數據NSArray* paths NSSearchPathForDirectoriesInDomains(NSDesktopDirectory, NSUserDomainMask, YES);NSString* thepath [paths lastObject];thepath [thepath stringByAppendingPathComponent:"fd_list.txt&qu…

csgo怎么控制電腦玩家_電腦遠程控制怎么弄

本教程以“Win 10”系統為例進行演示。方法一&#xff1a;1/6在“此電腦”單擊鼠標右鍵選擇“屬性”2/6在彈出窗口中點擊“遠程設置”3/6勾選“允許遠程協助連接這臺計算機”&#xff0c;然后點擊應用并確定4/6在微軟小娜搜索“mstsc”5/6打開“遠程桌面連接”6/6輸入對方的IP地…

HTML 5 的自定義 data-* 屬性和jquery的data()方法的使用

HTML 5 的自定義 data-* 屬性和jquery的data()方法的使用 人們總喜歡往HTML標簽上添加自定義屬性來存儲和操作數據。但這樣做的問題是&#xff0c;你不知道將來會不會有其它腳本把你的自定義屬性給重置掉&#xff0c;此外&#xff0c;你這樣做也會導致html語法上不符合Html規范…

java。接口和抽象類區別

接口和抽象類區別 a.抽象類里可以有非抽象方法 接口里只能有抽象方法 b.接口是抽象類的變體&#xff0c;再接口中所有方法都是抽象的轉載于:https://www.cnblogs.com/zhaozhaozhang/p/5759714.html

MNIST 手寫數字識別,我是如何做到886個可訓練參數,識別率達到98.2%? (參數、模型壓縮), Keras實現,模型優化

一 項目展示 下面可以看到驗證集可以到了0.9823了&#xff0c;實際上&#xff0c;在下面的另外一個訓練&#xff0c;可以得到0.9839&#xff0c;我保守的寫了0.982 二 項目參數展示 我們先來看看LeNet 5 的結構與參數&#xff0c;參數有61&#xff0c;706個。 這個是我用…

javascript 計算兩個坐標的距離 米_土方全面應用計算

各種土方量的計算方法匯總8.2.1 DTM法土方計算由DTM模型來計算土方量是根據實地測定的地面點坐標(X&#xff0c;Y&#xff0c;Z)和設計高程&#xff0c;通過生成三角網來計算每一個三棱錐的填挖方量&#xff0c;最后累計得到指定范圍內填方和挖方的土方量&#xff0c;并繪出填…

VS2008 AJAX控件介紹

1 Accordion 2 AccordionPane 實現多面板&#xff0c;每次都只顯示一個&#xff0c;其他收藏起來&#xff0c;可以設置顯示隱藏的時間和漸變效果哦 3 AlwaysVisibleControlExtender 這個東西是將VerticalSide的值設置好后無論頁面的滾動條滾動&#xff0c;這個目標控件一直都顯…

py文件轉exe時包含paramiko模塊出錯解決方法

問題描述&#xff1a;python代碼中包含paramiko模塊的遠程登錄ssh&#xff0c;在用pyInstaller轉為exe時報錯&#xff0c; 報錯提示為“No handlers could be found for logger "paramiko.transport" 出錯位置&#xff1a; ssh paramiko.SSHClient() ssh.set_missin…

unity 陽光插件_網絡廣告,陽光創信保駕護航

網絡廣告 就找陽光創信。網絡營銷的技術基礎主要是以計算機網絡技術為代表的信息技術。計算機網絡是現代通信技術與計算機技術相結合的產物&#xff0c;它把分布在不同地理區域的計算機與專門的外部設備用通信線路互連成一個規模大、功能強的網絡&#xff0c;從而使眾多的計算機…

第2章 Python 數字圖像處理(DIP) --數字圖像基礎1 - 視覺感知要素 - 亮度適應與辨別

數字圖像基礎1視覺感知要素亮度適應與辨別import sys import numpy as np import cv2 import matplotlib import matplotlib.pyplot as plt import PIL from PIL import Imageprint(f"Python version: {sys.version}") print(f"Numpy version: {np.__version__…

快速冪與快速乘法

List 快速冪與快速乘法 ListKnowledge快速冪 原理code快速乘法 原理codeKnowledge 快速冪 原理 a^b%p 采用二進制得思想&#xff0c;將b轉化為二進制數。 b c02^0c12^1c22^2c32^3……cn2^n a^b a^(a12^0)a^(c12^1)……a^(cn2^n) 所以我們可以在log(b)的時間內求出a^(2^0)…

Java程序設計 圖形用戶界面 小巫版簡易計算器

/** 作者&#xff1a;wwj 時間&#xff1a;2012/4/13 功能&#xff1a;實現一個計算器應用程序實驗要求&#xff1a;編寫一個模擬計算器的應用程序&#xff0c;使用面板和網格布局&#xff0c; 添加一個文本框&#xff0c;10個數字按鈕&#xff08;0~9&#xff09;&#xff0c;…

phpcms文件結構

主要目錄部分 /admin 管理后臺目錄 -- /skin/ 后臺樣式 -- /templates/ 后臺樣式模板/api api接口 /corpandresize 在線圖片處理 -- /css/ csss樣式 -- /images/ 圖片 -- /js/ 引用js文件 -- /tmp/ 臨時文件/data 數據緩存…

第1章 Python 數字圖像處理(DIP) --緒論

Python 數字圖像處理 關于本專欄 此專欄為 Python 數字圖像處理&#xff08;DIP&#xff09;&#xff08;岡薩雷斯版&#xff09;&#xff0c;專欄里文章的內容都是來自書里&#xff0c;全部手打&#xff0c;非OCR&#xff0c;因為很多公式&#xff0c;都是用LaTex輸入&#xf…

phython在file同時寫入兩個_輕松支撐百萬級數據點寫入 京東智聯云時序數據庫HoraeDB架構解密...

本文將通過對時序數據的基本概念、應用場景以及京東智聯云時序數據庫HoraeDB的介紹&#xff0c;為大家揭秘HoraeDB的核心技術架構和解決方案。首先我們來了解下時序數據庫的基本概念。時序數據庫全稱時間序列數據庫&#xff0c;主要用于處理帶時間標簽的數據&#xff0c;帶時間…

飛雪迎春

轉載于:https://www.cnblogs.com/ysx4221/p/3537810.html

高可用集群技術之corosync應用詳解(一)

Corosync概述:Corosync是集群管理套件的一部分&#xff0c;它在傳遞信息的時候可以通過一個簡單的配置文件來定義信息傳遞的方式和協議等。它是一個新興的軟件&#xff0c;2008年推出&#xff0c;但其實它并不是一個真正意義上的新軟件&#xff0c;在2002年的時候有一個項目Ope…