新時尚Windows8開發(14):如何選取連絡人資訊

來源:互聯網
上載者:User

老周的部落格http://blog.csdn.net/tcjiaan,轉載請註明原作者和出處。

 

前面我們講了如何用檔案選取器選取檔案,其實,還有一個目錄選取器,不過,我先放著不說,因為它用起來和選取檔案是一個道理,大家不妨嘗試一下舉一反六。

今天,我們說一說如何從“人脈”中選取連絡人資訊,說白了,也和檔案選取的方法基本一樣,後面做執行個體演練的時候,大家會看到的。

 

在開始實踐之前,我們需要準備一些資料,即連絡人,如果沒有,你可以隨便加幾個來測試。

從可愛的“開始”螢幕中找到“人脈”應用,並啟動。

 

如果是第一次使用,會要求你輸入MS帳號擷取連絡人,我們就按提示操作,如果你沒有Live ID,就隨便申請一個唄。

 

驗證並登陸成功後,你就會看到你的好友們了。

 

 

如果你還沒有連絡人,調出工具條,點擊“建立”按鈕。

 

至於連絡人資訊,我們目前只是測試,所以,隨例填就行了,如所示。

 

填完後,點擊“儲存”,這樣就建立了連絡人記錄。為了方便測試,你可以多建N條記錄。

 

好了,有了資料,我們就可以動手練習了。

1、啟動美麗的VS2012,建立一個app應用。

2、開啟MainPage.xaml,介面這按下面的XAML布局即可,簡便易讀嘛。

<Page    x:Class="myAppExample.MainPage"    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    xmlns:local="using:myAppExample"    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"    mc:Ignorable="d">    <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">        <Grid.RowDefinitions>            <RowDefinition Height="auto"/>            <RowDefinition Height="*"/>        </Grid.RowDefinitions>        <StackPanel Grid.Row="0" Margin="15,27,0,22">            <Button Content="選取連絡人" Click="onPick"/>        </StackPanel>        <ListView Grid.Row="1" Margin="25" x:Name="lvContacts" ScrollViewer.HorizontalScrollMode="Auto" ScrollViewer.HorizontalScrollBarVisibility="Auto">            <ListView.ItemsPanel>                <ItemsPanelTemplate>                    <WrapGrid Orientation="Vertical" MaximumRowsOrColumns="5" ItemWidth="300" VerticalChildrenAlignment="Center"/>                </ItemsPanelTemplate>            </ListView.ItemsPanel>        </ListView>    </Grid></Page>

3、在XAML文檔中,找到Button的Click事件處理常式,從彈出的菜單中選擇“定位到事件處理常式”。

 

背景處理代碼,如下。

using System;using System.Collections.Generic;using System.IO;using System.Linq;using Windows.Foundation;using Windows.Foundation.Collections;using Windows.UI.Xaml;using Windows.UI.Xaml.Controls;using Windows.UI.Xaml.Controls.Primitives;using Windows.UI.Xaml.Data;using Windows.UI.Xaml.Input;using Windows.UI.Xaml.Media;using Windows.UI.Xaml.Navigation;using Windows.ApplicationModel.Contacts;using Windows.UI.Xaml.Documents;namespace myAppExample{    public sealed partial class MainPage : Page    {        public MainPage()        {            this.InitializeComponent();        }        private async void onPick(object sender, RoutedEventArgs e)        {            ContactPicker cpicker = new ContactPicker();            IReadOnlyList<ContactInformation> list = await cpicker.PickMultipleContactsAsync();            if (list == null)            {                return;            }            this.lvContacts.Items.Clear();            foreach (var item in list)            {                TextBlock tb = new TextBlock();                tb.TextWrapping = TextWrapping.Wrap;                // 連絡人名字顯示為標題                Run runTitle = new Run();                runTitle.FontSize = 22d;                runTitle.FontWeight = Windows.UI.Text.FontWeights.Bold;                runTitle.Text = item.Name;                // 將標題文本添加到TextBlock中                tb.Inlines.Add(runTitle);                // 一個分行符號                tb.Inlines.Add(new LineBreak());                // 讀出連絡人的手機號碼列表                foreach (var ph in item.PhoneNumbers)                {                    Run runNo = new Run();                    runNo.Text = string.Format("{0}:{1}", ph.Name, ph.Value);                    tb.Inlines.Add(runNo);                    tb.Inlines.Add(new LineBreak());                }                ListViewItem vitem = new ListViewItem();                // TextBlock作為ListViewItem的內容                vitem.Content = tb;                this.lvContacts.Items.Add(vitem);            }        }    }}

a、記得引入命名空間Windows.ApplicationModel.Contacts,我們用到的ContactPicker類就在該命名空間下;

b、通過調用PickMultipleContactsAsync方法,可以一次性選擇多位連絡人,它是一個非同步方法呼叫,記得加上等待關鍵字;

c、每一位連絡人的資訊,由一個ContactInformation執行個體表示,因為通過foreach迴圈可以取出所選擇的連絡人資訊,其中Name屬性工作表示不連絡人的名字,本例我們需要取得連絡人的手機號碼,因而我們訪問PhoneNumbers屬性,由於一位連絡人可能擁用N個手機號碼(比如工作用的,家庭用的,泡妞專用的),所以,無論是PhoneNumbers屬性也好,Emails屬性也罷,都是一個ContactField列表,而每個ContactField就代表一個欄位資訊,重要的屬性我們一般會讀取Name和Value,比如:

phoneno : 13521103823

email : abcd@126.com

Name就是phoneno,Value就是13521103823。

 

現在,我們可以運行應用程式了。

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.