【原創】windowsphone(windowsmobile)開發基礎筆記

關於api的參考:node

空間在下面的命名空間內;git

項目構成:web

程序導航:sql

frame的棧結構:數據庫

屬性和方法:編程

項目運行:canvas

即時窗口中:c#

頁面跳轉:
this.frame.navigate(typeof(頁面名));windows

判斷可否後退和前進:
if(this.frame.cangoback)api

if(this.frame.cangoforward)

頁面返回:
this.frame.goback();
頁面前進:
this.frame.goforward();

控件篇:
關於style:
<Grid.Resources>

</Window.Resources>
複製代碼
1.3 若是在其餘控件(例如Grid)的Resources中聲明Style,則它的有效範圍就是這個控件

複製代碼
<Grid.Resources>

</Grid.Resources>
複製代碼
注:
Style中若是隻寫了TargetType="Button",沒有寫x:Key,則Style有效範圍內的Button的Style默認都是這個Style。
Style中若是寫x:Key=「buttonStyle1」了,則引用此Style的方法爲Style="{StaticResource buttonStyle1}"

  1. TargetType
    若是沒有給Style指定TargetType,則在寫Style時,必須給每一個屬性添加類型,這樣不一樣的類型能夠共用同一個Style:

注:將Style1同時指定給Button和TextBlock,Button會自動忽略不適用它們的屬性Text。而兩者公有的屬性Height,Width,對兩者都有效。

查看:
深刻WPF--Style
超連接hyperlinkbutton:
添加超連接;

textbox:
屬性:
fontfamily 字體設置;
inputscope:鍵盤類型 枚舉
acceptsreturn :是否支持enter換行 bool
header控件頭: 文本說明
textwarping=warp 文本多行

關於fontweight bold 爲加粗 light 爲加亮 black爲加黑

關於換行標籤(至關於br標籤):
//注:該標籤必須有Run標籤輔助 for example:

關於run子標籤

button按鈕:
clickmode屬性:
1,設置懸浮(hover)執行點擊操做;
2,press, 壓下執行
3,release 彈起執行

在c#中:
Button btn = new Button();//用新的Button覆蓋以前的button
gd_main.Children.Add(btn);
Grid.SetRow(btn, i);
Grid.SetColumn(btn, j);
btn.Content = num.ToString();
btn.FontSize = 40;
btn.Background = new SolidColorBrush(Blue);
comobox下拉控件:
//不只僅能夠添加文本,其它控件亦可
在c#中添加:

關於在c#中添加控件:

出現位置及大小設置:

對齊設置:

窗體中添加控件:

容器中添加控件:
各控件有所不一樣:
comobox下拉控件:
//不只僅能夠添加文本,其它控件亦可
在c#中添加:

佈局控件中添加:

border邊框控件:
屬性:

borderbrush 爲邊框顏色畫刷
borderthickness 爲邊框寬度

listview控件:
添加項目:
listView1.Items.Add(textBox1.Text);

刪除項目:
listView1.Items.Remove(listView1.SelectedItems[listView1.SelectedItems[0].Index]);

關於數據綁定:

c#中的綁定語法:
lv_appear.ItemsSource = list;

xaml中的形式:

顯示值的設置:
xaml中

關於選中項目的內容獲取:

selecteditem指選取的對象。
selecteditem指選取的值。xaml須要設置
grid:
Grid.Columdefinitons來聲明一列。
Height表示該行的高度,
width表示列的寬度。
其中」*」表示該行的高度和寬度基於可用空間(去掉其它固定高度行的高度)的加權比例.

stackpanel:
屬性:
orientation: 排列方式 水平horizontal,垂直?
messagedialog:
即wpf的messagebox控件

括號內的屬性:
(string1,string2)
//string1 表示顯示的內容,string2表示顯示的標題。

彈出提示框:

注:其中的await showAsync()爲異步操做(?);
須要命名空間:using Windows.UI.Popups;

slider滑動控件:

flyout浮出控件:

flyout爲button的默認click事件。

若是用於其餘控件,則代碼以下:
xaml:
<TextBox Header="請輸入:" Name="txt_enter" Grid.Column="1" Grid.Row="1" Height="59" RenderTransformOrigin="0.513,4.86" Margin="10,148,45,0" TextChanged="txt_enter_TextChanged" >
<FlyoutBase.AttachedFlyout>



</FlyoutBase.AttachedFlyout>

c#:
private void txt_enter_TextChanged(object sender, TextChangedEventArgs e)
{
FrameworkElement ele = sender as FrameworkElement;
if (txt_enter.Text == "我是魯新")
FlyoutBase.ShowAttachedFlyout(ele);
}

4.15 浮出控件(Flyout) 浮出控件(Flyout)是一個輕型的輔助型的彈出控件,一般會做爲提示或者要求用戶進行相關的交互來使用。Flyout控件與Windows Phone裏面的彈出框MessageDialog是有很大區別的,首先Flyout控件是一個輔助控件,須要與其餘控件結合起來才能使用,還有就是取消的規則不同,Flyout控件能夠經過單擊或在外部點擊均可以輕鬆消除浮出控件。你可使用Flyout控件收集用戶輸入、顯示與某個項目相關的更多信息或者要求用戶確認某個操做。只有當爲了響應用戶點擊時才應顯示Flyout控件,也就是說Flyout控件並非直接就顯示出來,而是必需要用戶的操做才能呈現出來;當用戶在彈出窗口外部點擊時,Flyout控件就會消失,這也是Flyout控件默認的關閉規則。控件的XAML語法以下:

從控件的XAML語法中能夠看出,Flyout控件自己就是一種輔助性的控件,它必需要與其餘的控件結合起來使用才能夠,那麼一般會將Flyout控件附加到一個Button控件上直接相應Button控件的單擊事件,所以Button控件擁有Flyout屬性以簡化附加和打開 Flyout 控件。單擊按鈕時,附加到按鈕的浮出控件自動打開,這是不須要處理任何事件便可打開浮出控件。那麼對於非Button控件是否是不能使用Flyout控件呢?那麼答案確定是否認的,非Button控件也同樣可使用Flyout控件,你也可使用FlyoutBase.AttachedFlyout附加屬性,將 Flyout 控件附加到任何FrameworkElement對象。由於Flyout控件是必需要相應某個用戶的操做的,Button控件是默認關聯到了Click事件,若是是用FlyoutBase.AttachedFlyout附加屬性來添加Flyout控件的這種狀況下,就必須響應FrameworkElement控件上的交互,例如 Tapped,並在你的代碼中打開Flyout控件。示例代碼以下所示:

XAML代碼:

<FlyoutBase.AttachedFlyout> </FlyoutBase.AttachedFlyout>

C#代碼:

private void TextBlock_Tapped(object sender, TappedRoutedEventArgs e){ FrameworkElement element = sender as FrameworkElement; if (element != null) { FlyoutBase.ShowAttachedFlyout(element); }}

從上文咱們知道了Flyout控件的兩種建立方式,一種是經過Button控件的Flyout屬性添加,另外的一種就是經過FlyoutBase.AttachedFlyout附件屬性給任何的FrameworkElement對象來添加。那麼在Windows Phone上Flyout控件一共有6種不一樣的類型:Flyout、DatePickerFlyout、TimePickerFlyout、PickerFlyout、ListPickerFlyout和MenuFlyout。

(1)Flyout
Flyout類型表示用於處理自定義的浮出窗口的。Flyout控件常常會使用的事件是Closed、Opened和Opening事件,分別表示是在關閉、已打開和正在打開的三種時機觸發的時間,在實際的程序開發中一般會在Closed事件處理程序中來獲取用戶的操做結果。同時這三種事件也是其餘類型的Flyout控件的共性,因此你能夠把Flyout類型的Flyout控件是最簡單和最基本的Flyout控件。
(2)DatePickerFlyout和TimePickerFlyout
DatePickerFlyout類型表示是選擇日期的浮出窗口;TimePickerFlyout表示是選擇時間的浮出窗口。DatePickerFlyout與TimePickerFlyout類型的Flyout控件其實是和TimePicker與DatePicker控件是很是相似的,只不過Flyout控件能夠監控到TimePicker與DatePicker控件的彈出時機。
(3)PickerFlyout和ListPickerFlyout
PickerFlyout表示是選擇的浮出窗口,能夠在頁面底下添加確認的菜單欄用於用戶進行確認;ListPickerFlyout表示是列表形式展現的浮出窗口,須要經過集合數據綁定來呈現列表的選擇。PickerFlyout和ListPickerFlyout類型的Flyout控件是選擇類型的浮出窗口,它們與其餘的Flyout控件的主要區別是提供了選中確認的時間分別是PickerFlyout對應的Confirmed事件和ListPickerFlyout對應的ItemsPicked事件,而須要注意的是ListPickerFlyout須要經過數據綁定來實現選擇的列表,關於數據綁定的知識在後續的章節還會進行更加詳細的介紹。
(4)MenuFlyout
MenuFlyout表示是上下文菜單的選擇浮出窗口。一個MenuFlyout會包含若干個MenuFlyoutItem,每一個MenuFlyoutItem表示一個選項,用戶能夠進行單擊,同時同時經過MenuFlyoutItem的Click單擊事件來處理用戶的單擊請求。MenuFlyout還有一個很大的特色就是當用戶當其彈出的時候,會把程序頁面的其餘部分會往裏面凹下去以強調彈出的MenuFlyout浮出層。
下面給出Flyout控件的示例:6種類型的Flyout控件的使用和Button與非Button控件對Flyout控件的集成。
代碼清單4-15:Flyout控件(源代碼:第4章\Examples_4_15)

1. MainPage.xaml文件主要代碼
2. ------------------------------------------------------------------------------------------------------------------
3.     <StackPanel>
4.         <!--最基本的Flyout 控件,自定義其浮出的內容-->
5.         <Button Content="Show Flyout">
6.             <Button.Flyout>
7.                 <Flyout>
8.                     <StackPanel >
9.                         <TextBox PlaceholderText="請輸入名字"/>
10.                         <Button HorizontalAlignment="Right" Content="肯定"/>
11.                     </StackPanel>
12.                 </Flyout>
13.             </Button.Flyout>
14.         </Button>
15.         <!--浮出上下文菜單,點擊菜單後改變當前按鈕上的文本內容-->
16.         <Button x:Name="menuFlyoutButton" Content="Show MenuFlyout" >
17.             <Button.Flyout >
18.                 <MenuFlyout>
19.                     <MenuFlyoutItem Text="Option 1" Click="MenuFlyoutItem_Click"/>
20.                     <MenuFlyoutItem Text="Option 2" Click="MenuFlyoutItem_Click"/>
21.                     <MenuFlyoutItem Text="Option 3" Click="MenuFlyoutItem_Click"/>
22.                 </MenuFlyout>
23.             </Button.Flyout>
24.         </Button>
25.         <!--浮出選擇日期彈窗,點擊肯定後會觸發DatePicked事件,而後能夠獲取選中的日期-->
26.         <Button Content="Show DatePicker" >
27.             <Button.Flyout>
28.                 <Controls:DatePickerFlyout Title="選擇日期:"  DatePicked="DatePickerFlyout_DatePicked"/>
29.             </Button.Flyout>
30.         </Button>
31.         <!--浮出選擇時間彈窗,點擊肯定後會觸發TimePicked事件,而後能夠獲取選中的時間--->
32.         <Button Content="Show TimePicker" >
33.             <Button.Flyout>
34.  <Controls:TimePickerFlyout Title="選擇時間:"  TimePicked="TimePickerFlyout_TimePicked"/>
35.             </Button.Flyout>
36.         </Button>
37.         <!--浮出選擇彈窗,顯示底下的確認取消菜單欄而且處理其確認事件Confirmed--->
38.         <Button Content="Show Picker" >
39.             <Button.Flyout>
40.                 <Controls:PickerFlyout   Confirmed="PickerFlyout_Confirmed" ConfirmationButtonsVisible="True">
41.                     <TextBlock Text="你肯定嗎?????" FontSize="30" Margin="0 100 0 0"/>
42.                 </Controls:PickerFlyout>
43.             </Button.Flyout>
44.         </Button>
45.         <!--浮出選擇列表彈窗,綁定集合的數據,處理選中的事件ItemsPicked-->
46.         <Button Content="Show ListPicker">
47.             <Button.Flyout>
48.                 <Controls:ListPickerFlyout x:Name="listPickerFlyout" Title="選擇手機品牌:" ItemsPicked="listPickerFlyout_ItemsPicked"  >
49.                     <Controls:ListPickerFlyout.ItemTemplate>
50.                         <DataTemplate>
51.                             <TextBlock Text="{Binding}" FontSize="30"></TextBlock>
52.                         </DataTemplate>
53.                     </Controls:ListPickerFlyout.ItemTemplate>
54.                 </Controls:ListPickerFlyout>
55.             </Button.Flyout>
56.         </Button>
57.         <!--使用附加屬性FlyoutBase.AttachedFlyout來實現Flyout控件-->
58.         <TextBlock Text="請點擊我!" Tapped="TextBlock_Tapped" FontSize="20">
59.                 <FlyoutBase.AttachedFlyout>
60.                     <Flyout>
61.                         <TextBox Text="你好!"/>
62.                     </Flyout>
63.                 </FlyoutBase.AttachedFlyout>
64.         </TextBlock>
65.     </StackPanel>

MainPage.xaml.cs文件主要代碼

public MainPage()
{
    this.InitializeComponent();
    // 綁定ListPickerFlyout的數據源
    listPickerFlyout.ItemsSource = new List<string> { "諾基亞", "三星", "HTC", "蘋果", "華爲" };
}
// PickerFlyout的確認事件,在事件處理程序裏面能夠處理相關的確認邏輯
private async void PickerFlyout_Confirmed(PickerFlyout sender, PickerConfirmedEventArgs args)
{
    await new MessageDialog("你點擊了肯定").ShowAsync();
}
// TimePickerFlyout的時間選中事件,在事件處理程序裏面能夠獲取選中的時間
private async void TimePickerFlyout_TimePicked(TimePickerFlyout sender, TimePickedEventArgs args)
{
    await new MessageDialog(args.NewTime.ToString()).ShowAsync();
}
// DatePickerFlyout的日期選中事件,在事件處理程序裏面能夠獲取選中的日期
private async void DatePickerFlyout_DatePicked(DatePickerFlyout sender, DatePickedEventArgs args)
{
    await new MessageDialog(args.NewDate.ToString()).ShowAsync();
}
// MenuFlyout的菜單選項的點擊事件,點擊後直接獲取菜單欄的文本顯示到按鈕上
private void MenuFlyoutItem_Click(object sender, RoutedEventArgs e)
{
    menuFlyoutButton.Content = (sender as MenuFlyoutItem).Text;
}
// 經過FlyoutBase.ShowAttachedFlyout方法來展現出Flyout控件
private void TextBlock_Tapped(object sender, TappedRoutedEventArgs e)
{
    FrameworkElement element = sender as FrameworkElement;
    if (element != null)
    {
        FlyoutBase.ShowAttachedFlyout(element);
    }
}
// ListPickerFlyout的選中事件,點擊列表的某一項便會觸發,在事件處理程序中一般會獲取選中的項目來進行相關邏輯的處理
private async void listPickerFlyout_ItemsPicked(ListPickerFlyout sender, ItemsPickedEventArgs args)
{
    if (sender.SelectedItem != null)
    {
        await new MessageDialog("你選擇的是:" + sender.SelectedItem.ToString()).ShowAsync();
    }
}

datepicker日期選擇控件:
屬性:
date 選中的日期
事件:
datechange 改變日期

注意:
在date的屬性轉換爲字符串類型時,會出現時分秒。解決辦法爲tostring方法添加格式:
dattepicker1.date.tostring(yyyy-mm-dd);
媒體控件:

注:
路徑既能夠是本地文件也能夠是網絡文件。
路徑一旦賦值,文件當即播放。除非設置autoplay屬性爲flase。

listview控件:
菜單控件:

</Grid>

<Page.BottomAppBar>
    <CommandBar Height="24">

//四個圖標選項




//沒有圖標的附屬選項
<CommandBar.SecondaryCommands>


</CommandBar.SecondaryCommands>

</Page.BottomAppBar>

canvas控件:
畫板控件。

hub控件(中心應用容器):



<hub.background>

<hub.background>
.........


.........

pivot控件(透視應用容器):

與hub空間的不一樣:
1,pivot控件背景圖不隨滑動而滑動。
2,hub控件是內容顯露,pivot控件是標題顯露。

控件屬性繼承:
父控件被子控件繼承,若是子控件屬性單獨設置了,則覆蓋夫控件。
注:background不能被繼承。
圖形控件:
通用屬性:
fill: 填充顏色
stroke: 輪廓顏色
strokethickness:輪廓寬度

線性漸變畫刷:



矩形:recttangle
橢圓:ellipse

直線:line
<line x1="" y1="" x2="" y2="" stroke="" strokethickness(寬度)=「」 />
strokedasharray =「x y」 的數值是 相對於strokethickness的倍數,而非實際像素數。
//x爲虛線的線段長度,y爲線段之間的間隔。

polyline折線:
<polyline points="0,0 500,200 300,500 400,700"

多邊形polygon:

path路徑:
<path data="M0,0 L200,100 H300,100 Z"
M移動 起始點 L直線 H水平線 V垂直線 Z結束

f12:
切換到代碼界面。

第一行爲控件的命名空間;
第二行爲屬性的命名空間; //x:name 意思是第二行的屬性,由於第二行是屬性的集合。
關於messagedialog方法的一些注意:
須要命名空間:using Windows.UI.Popups;
MessageDialog類有如下經常使用方法和屬性:
    ShowAsync():異步彈出消息框.
    Commands:添加命令,在彈出框界面上同步添加相應的按鈕.
    DefaultCommandIndex:設置默認按鈕的索引,按ENTER鍵將激活該索引對應的命令按鈕
    CancelCommandIndex:設置取消退出按鈕的索引,按ESC鍵將激活該索引對應的命令按鈕
    Title:彈出消息框的標題
async:用於方法申明時,此關鍵字是告訴編譯器在這個方法體內可能會有await關鍵字。
await:用於異步操做時的模擬同步等待,聲明有此關鍵字的異步操做需等待異步操做完成以後才繼續往下運行,可是不會阻塞UI線
程。
  注意:使用await關鍵字的方法體,必須使用async聲明方法
wp8.1的軟件狀態:

即:
-》running 運行
-》notrunning 中止
-》suspended 掛起
另外:
activated 即加載狀態完成 //此爲事件
activating 即正在加載狀態 此時能夠加載圖片
suspending 正在掛起 //此爲事件
resuming //此爲事件

保存數據:
爲確保數據安全,在掛起時保存數據。
數據保存的三種方法:

第一種方法:
註冊存儲:

注:在寫的過程當中會生成命名空間。

掛起數據存儲:

把以前掛起的數據重加載:

第二種方法:

註冊存儲:

注:在寫的過程當中會生成命名空間。

掛起數據存儲:

把以前掛起的數據重加載:

在基礎頁代碼行找到loadstate和savestate事件

添加e的pagestate。注意:這裏保存的控件數據只能是本基礎頁的。

加載數據,要先作判斷。

實際就是第一種基礎上進行。

第三種方法(主流):

爲改變事件添加代碼,注意ApplicationData須要添加命名空間。

在loaadstate中加載:

最好作null判斷

關於localsettings :

關於try與catch:
try
{

}
catch(exception ex) //把異常拋出
{

}
數據綁定:
術語:
綁定對象
綁定源
路徑

擴展語法形如:

數據綁定類型:

mode=類型名

onetime:綁定一次
oneway:單向綁定
twoway:雙向綁定

類型設置語法:
{binding path=。。。 mode=類型名}

注意:爲了讓前臺i及時更新數據,須要使數據源類繼承自接口INotifyPropertyChanged 該接口須要添加命名空間:using System.ComponentModel;
注:沒有該接口,只能前臺---》後臺。
並實現該接口,以下:
i
並編寫方法:

後面詳見下列代碼:

該段代碼:
string birthdate;
public string number
{
get{return birthdate;}
set
{ birthdate = value;
func(number);
}

}
    public event PropertyChangedEventHandler PropertyChanged;   //該事件經過右擊上面的藉口得到。
    public void func( string bingdingname)
    {
        if(PropertyChanged != null)
        {
            PropertyChanged(this,new    PropertyChangedEventArgs(bingdingname));
        }
    }

綁定列表集合:

控件設計:

綁定後臺集合:

網絡數據請求:

生命週期按鈕:
視圖--》工具欄--》調試位置

後臺數據更改集合:
observablecollection 該集合類型能夠及時更新前臺數據;
注:須要添加新的命名空間。

綁定數據源(集合):
itemssource=。。。。

靜態資源:

mvvm框架:

獲取動態添加的控件的屬性:
1,能夠添加控件名。經過控件名操做;
2,數據集中能夠經過索引。
應用數據與公共文件

應用數據
注:
應用數據不能跨應用訪問,不能可見訪問。
通常存儲字符串等簡單類型。
applicationdata.current.localsettings:

詳見:四級快速算分器

數據的手動刪除:

判斷鍵值是否存在:

刪除語法:
容器.remove(鍵值);
公用文件

建立公共文件:
//獲取公共文件夾
knowfolder.公共文件夾類型(圖片,視頻,音樂) //需導入命名空間,而且在設置中勾選該類型庫。

想要保存惟一名,即若是有重複即添加數字以區分。以下:

具體代碼:
StorageFolder folder = KnownFolders.MusicLibrary;
StorageFile file = await folder.CreateFileAsync(txt_filename.Text.ToString() + ".txt",CreationCollisionOption.GenerateUniqueName);
await FileIO.WriteTextAsync(file,txt_filecontent.Text);
await new MessageDialog("","建立成功!!!").ShowAsync();

動態磁貼及通知;

toast(通知):
參考(微軟官網):

建立步驟:

注:
1,建立前要在設置中容許顯示通知。

2,加載模板(共8種,官網詳細): 以第一種(toastText01)爲例:

注:須要添加命名空間。
須要添加;
using Windows.UI.Notifications;

3,把加載的模板傳值給定義變量:

注:須要添加命名空間。
須要添加;
using Windows.Data.Xml.Dom;

4,加載數據:

5,總的過程:

模板(單種文本):
private void toastappear_Click(object sender, RoutedEventArgs e)
{
XmlDocument xml = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastText01);
XmlNodeList nodelist = xml.GetElementsByTagName("text");
nodelist[0].AppendChild(xml.CreateTextNode("來自魯新的問候"));
ToastNotification tn = new ToastNotification(xml);
ToastNotificationManager.CreateToastNotifier().Show(tn);
}

以第二種爲例:(標題加內容)(應用較爲廣泛):

自定義模板(使用xml代碼):

注:紅色代碼區域模板來自於微軟文檔(第一種模板爲例),注意要四個雙引號。

效果以下:

注:
wp只能顯示文本,win8能夠顯示圖片。
磁貼設計
建立輔助磁貼:

1,首先建立應用磁貼id(類中):

2,建立此貼構造函數:

注:
1,須要添加命名空間。
2,構造函數中的圖片要求150*150
3,最後一個參數是指顯示的磁貼的大小

3,(選作)設置其餘尺寸磁貼:

4,設置顯示文本(第二步的第二個參數):

5,顯示磁貼:

注:
別忘了添加async關鍵字。

判斷磁貼是否存在並做相應操做:

在mainpage中的:

方法中添加判斷。

在按鈕的點擊事件中對兩種狀況進行處理:
刪除:

建立部分上面已給出:

進行磁貼更新:

注:
磁貼更新的模板也在官網,須要時查詢。

下面 以更新150150磁貼(文本)爲例:
該模板有一行大標題,三行文本。
300
150 有5行文本。

1,

注:須要添加兩個命名空間。

2,

注:建立tn與toast相似,設置更新時間,10s。信息顯示10s後消失。

3,顯示消息:

注:
關於磁貼翻轉的使用,能夠到官網上參考。
注意:
關於安裝文件內的媒體數據:
訪問格式:

多媒體開發

例;player.play();

注:
路徑既能夠是本地文件也能夠是網絡文件。
路徑一旦賦值,文件當即播放。除非設置autoplay屬性爲flase。

注:
currentstateechanged 事件指的是播放器狀態發生改變時觸發,配合currentstate屬性。

開啓媒體播放進度條:

樣式:

一個uri方案:

例:訪問本地文件:

傳輸控件(響應硬件系統設置):

c#代碼中的一些問題(參數 sender 與 e):

上面事件中的指的是該事件的主體控件(利用這個能夠爲控件命名)
指的是 傳入的值。
地圖服務

申請令牌:

mapcontrol控件:
地圖控件鋪滿全屏:
方法1,去掉控件所有屬性
方法2,控件上右擊,佈局--》所有重置

使用地圖令牌:
1,找到

並查看代碼

2,找到phoneidentity,把

phoneproductId改成地圖令牌標識,即

3,在設置中勾選位置選項。

4,在xaml代碼界面中地圖控件添加屬性,並把

複製到代碼中。

在地圖中顯現當前位置:

代碼:

注:
geolocator.coordinate.latitude爲緯度,
geolocator.coordinate.longitude爲經度

縮放屬性zoomlevel(1--20):
能夠經過滑動控件控制縮放值:

地址與經緯度之間的轉化:

微軟方式:

觸摸 手勢操做

參考資料:

指針:

關於滑動操做:

例子:判斷方向:

複雜觸摸的處理(點按,雙按,長按)

righttapped(右擊):指的是長按彈起觸發
多點觸控與復瑣事件:

注:
使用此係列事件須要啓用:
以下:

封裝方法:
選中內容,右擊,提取方法。

關於DeBug:

注:需導入命名空間

處理後退鍵:
publicMainPage(){this.InitializeComponent();#if WINDOWS_PHONE_APPWindows.Phone.UI.Input.HardwareButtons.BackPressed+=HardwareButtons_BackPressed;#endifthis.NavigationCacheMode=Windows.UI.Xaml.Navigation.NavigationCacheMode.Enabled;}#if WINDOWS_PHONE_APPvoidHardwareButtons_BackPressed(object sender,Windows.Phone.UI.Input.BackPressedEventArgs e){if(Frame.CanGoBack){
e.Handled=true;Frame.GoBack();}}#endif

連接跳轉:

Windows Phone 8.1 中可使用這個連接跳轉到應用評論頁面:
await Windows.System.Launcher.LaunchUriAsync(
newUri("ms-windows-store:reviewapp?appid="+CurrentApp.AppId));
注:需添加命名空間
開發筆記:如何在應用內跳轉到微軟商店中查看開發者名下所有應用列表

咱們能夠很容易地使用微軟的文件和URI協議的Windows Phone8,直接啓動Windows應用程序商店,以顯示在您的出版商名稱的應用程序列表。一個小例子已經以下。

//function to display the application list
public async void launch()
{
//以"深圳九幽網絡科技有限公司"爲例:
await Windows.System.Launcher.LaunchUriAsync(new Uri("zune:search?publisher=深圳九幽網絡科技有限公司"));
}
調用上述功能後,您將獲得進入發行商名下APP列表,記得修改連接中的「publisher=」爲您的發行商名稱哦!
跳轉到 應用下載頁面:

//注:在帳戶中找到應用連接使用連接便可。

await Launcher.LaunchUriAsync(new Uri("zune:navigate?appid=dcdd7004-064a-4c04-ad22-eae725f8ffb1")); }

檢測雙擊的方法:
如下是雙擊檢測的方法:
longLastExitAttemptTick=DateTime.Ticks;privatevoidBackButtonPressHandler(...){long thisTick =DateTime.Ticks;if(LastExitAttemptTick- thisTick <[specified amount]){//退出代碼}elseLastExitAttemptTick=DateTime.Ticks;}
郵件反饋:
wp8.1 app調用outlok郵箱反饋,wp8.1app調用outlok

開發wp8.1 app 添加郵箱反饋功能,using Windows.ApplicationModel.Email; 方法以下
privateasyncvoid SendEmailTask()
{
var emailMessage = new EmailMessage();
emailMessage.Subject = "subject";
emailMessage.Body = "body";
emailMessage.To.Add(new EmailRecipient("emailAddress"));
await EmailManager.ShowComposeNewEmailAsync(emailMessage);
}
注:配合 TextBlock中的

網絡編程

http協議:

httpwebrequest:
get請求:

sqlite操做
wp8.1
注意:
修改數據應直接對數據庫進行操做,而非數據列表。

修改數據庫數據:
SQLiteAsyncConnection conn = connData();
ObservableCollection list = new ObservableCollection (await conn.Table ().ToListAsync());
//for (int i = 0; i < list.Count; i++)
//{
// if (list[i].ID == 2)
// {
// list[i].Name = "小夢我愛你,再一次";
// }
//}
var query = conn.Table ().Where(x => x.ID == 2);
var result = await query.ToListAsync();
foreach (var item in result)
{
item.Name = "小夢我愛你";
await conn.UpdateAsync(item);
}
//ObservableCollection lists = new ObservableCollection (await conn.Table ().ToListAsync());*/
lv_appear.ItemsSource = list;

閃光燈:
如何在 Windows Phone 8 的應用中使用相機閃光燈

2014/6/18
適用於:Windows Phone 8 和 Windows Phone Silverlight 8.1 | Windows Phone OS 7.1
從 Windows Phone OS 7.1 開始,您可使用 Microsoft.Devices.PhotoCamera 類以編程方式訪問手機的相機。本主題介紹如何採用編程方式設置相機閃光燈模式。本主題是如何爲 Windows Phone 8 建立基本相機應用的繼續,而且假定您已在該主題中建立了基本相機項目。
提示:
從 Windows Phone 8 開始,應用能夠將 PhotoCaptureDevice 類用於高級捕獲方案。PhotoCaptureDevice 容許應用控制照片屬性,例如 ISO、曝光補償和手動對焦位置(在手機上可用時)。本主題沒有演示PhotoCaptureDevice;有關使用此類的更多信息,請參見 Windows Phone 8 的高級照片拍攝。
本主題與基本相機示例相對應。
Windows Phone 支持 FlashMode 枚舉中的下列閃光燈模式。
閃光燈模式
描述
Off
相機閃光燈已禁用。
On
相機閃光燈已啓用。
RedEyeReduction
紅眼消除已啓用。
自動
相機閃光燈在自動模式下使用。
重要說明:
並不是全部設備都支持全部閃光燈模式;重要的是在使用以前,調用 IsFlashModeSupported(FlashMode) 方法來確承認用的模式。
實現相機閃光燈

本節提供在您的應用中實現閃光燈模式配置所需的代碼。
實現相機閃光燈的步驟

打開在如何爲 Windows Phone 8 建立基本相機應用中建立的基本相機項目。
在主頁 XAML 文件 MainPage.xaml 的 StackPanel 元素中添加如下代碼,放在名爲 ShutterButton 的 Button 元素下面。該代碼爲相機閃光燈的按鈕。
XAML
<ButtonName="FlashButton"Content="Fl:TBD"Click="changeFlash_Clicked"FontSize="26"FontWeight="ExtraBold"Height="75"/>
打開主頁的代碼隱藏文件 MainPage.xaml.cs,在 MainPage 類構造函數上面添加如下變量聲明:
C#
VB
// Holds current flash mode.privatestring currentFlashMode;

在 MainPage.xaml.cs 中,向 OnNavigatedTo 方法中添加如下代碼,放在 Disable UI 註釋下面。
C#
VB
FlashButton.IsEnabled = false;
該代碼禁用閃光燈按鈕。當設備上的相機不可用時使用。
在 MainPage.xaml.cs 中,向 cam_Initialized 方法中添加如下代碼,放在 txtDebug 語句下面。
C#
VB
// Set flash button text.
FlashButton.Content = "Fl:" + cam.FlashMode.ToString();

該代碼顯示 FlashButton 按鈕上的當前閃光燈模式。
在 MainPage.xaml.cs 中,向 MainPage 類添加如下代碼。該代碼經過每次按按鈕時切換到另外一種閃光燈模式來實現 changeFlash_Clicked 的事件處理程序。
C#
VB
// Activate a flash mode.// Cycle through flash mode options when the flash button is pressed.privatevoid changeFlash_Clicked(object sender, RoutedEventArgs e)
{

switch (cam.FlashMode)
    {
        case FlashMode.Off:
            if (cam.IsFlashModeSupported(FlashMode.On))
            {
                // Specify that flash should be used.
                cam.FlashMode = FlashMode.On;
                FlashButton.Content = "Fl:On";
                currentFlashMode = "Flash mode: On";
            }
            break;
        case FlashMode.On:
            if (cam.IsFlashModeSupported(FlashMode.RedEyeReduction))
            {
                // Specify that the red-eye reduction flash should be used.
                cam.FlashMode = FlashMode.RedEyeReduction;
                FlashButton.Content = "Fl:RER";
                currentFlashMode = "Flash mode: RedEyeReduction";
            }
            elseif (cam.IsFlashModeSupported(FlashMode.Auto))
            {
                // If red-eye reduction is not supported, specify automatic mode.
                cam.FlashMode = FlashMode.Auto;
                FlashButton.Content = "Fl:Auto";
                currentFlashMode = "Flash mode: Auto";
            }
            else 
            {
                // If automatic is not supported, specify that no flash should be used.
                cam.FlashMode = FlashMode.Off;
                FlashButton.Content = "Fl:Off";
                currentFlashMode = "Flash mode: Off";
            }
            break;
        case FlashMode.RedEyeReduction:
            if (cam.IsFlashModeSupported(FlashMode.Auto))
            {
                // Specify that the flash should be used in the automatic mode.
                cam.FlashMode = FlashMode.Auto;
                FlashButton.Content = "Fl:Auto";
                currentFlashMode = "Flash mode: Auto";
            }
            else
            {
                // If automatic is not supported, specify that no flash should be used.
                cam.FlashMode = FlashMode.Off;
                FlashButton.Content = "Fl:Off";
                currentFlashMode = "Flash mode: Off";
            }
            break;
        case FlashMode.Auto:
            if (cam.IsFlashModeSupported(FlashMode.Off))
            {
                // Specify that no flash should be used.
                cam.FlashMode = FlashMode.Off;
                FlashButton.Content = "Fl:Off";
                currentFlashMode = "Flash mode: Off";
            }
            break;
    }

    // Display current flash mode.this.Dispatcher.BeginInvoke(delegate()
    {
        txtDebug.Text = currentFlashMode;
    });
}

在設備上,經過選擇「調試 | 啓動調試」菜單命令來運行應用。

相關文章
相關標籤/搜索