Windows Phone做爲微軟的移動操做系統,對於Windows Phone程序來講,UI是用Sliverlight來開發的,可是並不徹底是Sliverlight的全集與子集的關係,由於Windows Phone上有的API或功能是PC上是沒有的,那PC上的sliverlight就更不用說了,現介紹其中幾種經常使用的特有功能。
1、重寫返回按鈕
返回按鈕Back表示後退,回到以前訪問的頁面,做爲系統按鈕,而非應用程序的按鈕,可跨越站點,位於最下面用左健頭的圖標表示,Start按鈕的左側。
(1) 啓動Visual Studio 2010,建立「Windows Phone Application」
圖3.1-1
(3)MainPage.xaml添加BackkeyPress事件。固然也可在後臺代碼文件的構造器函數MainPage()中,添加
BackkeyPress事件:
BackKeyPress="PhoneApplicationPage_BackKeyPress"
(4)編輯BackkeyPress事件函數,代碼以下:
private void PhoneApplicationPage_BackKeyPress(object sender, System.ComponentModel.CancelEventArgs e)
{
textBlock1.Text = "準備返回!";
}
(5) 按F5運行,可看到,按Back返回按鈕後,程序關閉,返回到手機的應用程序列表屏幕。
(6)現重寫程序,覆蓋默認行爲,屏幕對程序的影響,而不退出程序,代碼以下:
private void PhoneApplicationPage_BackKeyPress(object sender, System.ComponentModel.CancelEventArgs e)
{
textBlock1.Text = "準備返回!";
e.Cancel = true;//取消系統事件
}
(7)F5運行後,按Back按鈕,會看到顯示,但應用程序沒有關閉,如圖3.1-2。
圖3.1-2
工具欄Application Bar能夠理解爲系統按鈕的擴展, 但不是硬件按鈕,按鈕右側還有個省略號按鈕,表示一個菜單選項,若是還有額外的選項能夠經過菜單項來添加,這些菜單項默認是不顯示的。只有在點擊菜單欄右側的省略號(或省略號下方的區域)時纔會顯示出來,一個ApplicationBar最多可包含四個按鈕。
例3-2 建立工具欄
(1) 啓動Visual Studio 2010,建立「Windows Phone Application」
(2) 在解決方案資源管理器中,建立文件夾Img,並添加進三個圖標文件,kaobei.png、shijian.png、yinyue.png,並設各圖標生成操做「Build Action」屬性爲內容「Content」,如圖3.2-1:
圖3.2-1
(3)打開MainPage.xmal文件,位於程序底部有一些註釋,實爲工具欄的定義,去除註釋,從新內容,定義三個按鈕和二個菜單,並添加相應的事件,代碼以下:
<phone:PhoneApplicationPage.ApplicationBar>
<shell:ApplicationBar IsVisible="True" IsMenuEnabled="True">
<shell:ApplicationBarIconButton IconUri="/Img/kaobei.png" Text="拷備" Click="ApplicationBarIconButton_Click"/>
<shell:ApplicationBarIconButton IconUri="/Img/shijian.png" Text="時間" Click="ApplicationBarIconButton_Click_1"/>
<shell:ApplicationBarIconButton IconUri="/Img/yinyue.png" Text="音樂" Click="ApplicationBarIconButton_Click_2"/>
<shell:ApplicationBar.MenuItems>
<shell:ApplicationBarMenuItem Text="打印" Click="ApplicationBarMenuItem_Click"/>
<shell:ApplicationBarMenuItem Text="插入" Click="ApplicationBarMenuItem_Click_1"/>
</shell:ApplicationBar.MenuItems>
</shell:ApplicationBar>
</phone:PhoneApplicationPage.ApplicationBar>
(4)添加相應的事件處理代碼,以下:
private void ApplicationBarIconButton_Click(object sender, EventArgs e)
{
textBlock1.Text = "正在拷貝......";
}
private void ApplicationBarIconButton_Click_1(object sender, EventArgs e)
{
textBlock1.Text = "如今是:"+System .DateTime .Now.ToLongTimeString ();
}
private void ApplicationBarIconButton_Click_2(object sender, EventArgs e)
{
textBlock1.Text = "請插入光盤!!!";
}
private void ApplicationBarMenuItem_Click(object sender, EventArgs e)
{
textBlock1.Text = "正在打印....";
}
private void ApplicationBarMenuItem_Click_1(object sender, EventArgs e)
{
textBlock1.Text = "請選擇插入的文件!!";
}
(5)按F5運行,顯示如圖3.2-2:
圖3.2-2
點擊下面工具欄中的「時間」圖標按鈕,則顯示當前的時間,如圖3.2-3:
圖3.2-3
點擊省略號調出菜單,點擊菜單項目「打印」,則顯示如圖3.2-4:
圖3.2-4
多點觸摸技術指的是容許計算機用戶同時經過多個手指來控制圖形界面的一種技術,Windows Phone容許用戶以多點觸摸方式操做。
例3-3 構建多點觸摸
(1) 啓動Visual Studio 2010,建立「Windows Phone Application」項目。
(2)在解決方案資源管理器中,建立圖像目錄Img,並添加一幅示範圖像。
(3)在首頁面MainPage.xaml中,使用設計器修改程序標題,並添加一圖像Image控件,並設定好Source屬性爲示範圖像。設計如圖3.3-1:
圖3.3-1
(4)在代碼隱藏文件MainPage.xaml.cs中,添加各變換變量,代碼以下,已添加註解。
private TranslateTransform myTranslate;//圖像平移
private ScaleTransform myScale;//圖像縮放
private TransformGroup myGroup;//組合變換,可平移、縮放
public MainPage()
{
InitializeComponent();
this.ManipulationDelta += new EventHandler<ManipulationDeltaEventArgs>(MainPage_ManipulationDelta);
}
(6)初始化變量,並在Image控件上指定使用組合變換myGroup,代碼以下:
myTranslate = new TranslateTransform();
myScale = new ScaleTransform();
myGroup = new TransformGroup();
myGroup.Children.Add(myTranslate);
myGroup.Children.Add(myScale);
this.p_w_picpath1.RenderTransform = myGroup;
(7)編輯觸摸事件ManipulationDelta,代碼以下:
void MainPage_ManipulationDelta(object sender, ManipulationDeltaEventArgs e)
{
if ((e.DeltaManipulation.Scale.X > 0) && (e.DeltaManipulation.Scale.Y > 0))
{
this.myScale.ScaleX *= e.DeltaManipulation.Scale.X;
this.myScale.ScaleY *= e.DeltaManipulation.Scale.Y;
}
this.myTranslate.X += e.DeltaManipulation.Translation.X;
this.myTranslate.Y += e.DeltaManipulation.Translation.Y;
}
(8)按F5運行後,因使用的是模擬器,可用鼠標模擬手指拖曳圖像,如使用的是多點觸摸屏幕,也可縮放圖像,效果如圖3.3-2:
圖3.3-2