日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

重新想象 Windows 8 Store Apps (27) - 选取器: 联系人选取窗口, 自定义联系人选取窗口...

發(fā)布時(shí)間:2025/3/17 windows 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 重新想象 Windows 8 Store Apps (27) - 选取器: 联系人选取窗口, 自定义联系人选取窗口... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
原文:重新想象 Windows 8 Store Apps (27) - 選取器: 聯(lián)系人選取窗口, 自定義聯(lián)系人選取窗口

[源碼下載]


重新想象 Windows 8 Store Apps (27) - 選取器: 聯(lián)系人選取窗口, 自定義聯(lián)系人選取窗口



作者:webabcd


介紹
重新想象 Windows 8 Store Apps 之?選取器

  • ContactPicker - 聯(lián)系人選取器
  • ContactPickerUI - 自定義聯(lián)系人選取器



示例
演示如何通過 ContactPicker 選擇一個(gè)或多個(gè)聯(lián)系人,以及如何開發(fā)自定義聯(lián)系人選取器

1、 開發(fā)一個(gè)自定義聯(lián)系人選取器
Picker/MyContactPicker.xaml

<Pagex:Class="XamlDemo.Picker.MyContactPicker"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="using:XamlDemo.Picker"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"mc:Ignorable="d"><Grid Background="Transparent"><StackPanel Margin="120 0 0 0"><TextBlock Name="lblMsg" FontSize="14.667" /><Button Name="btnAddContract" Content="增加一個(gè)聯(lián)系人" Click="btnAddContract_Click" Margin="0 10 0 0" /></StackPanel></Grid> </Page>

Picker/MyContactPicker.xaml.cs

/** 演示如何開發(fā)自定義的聯(lián)系人選取器* * 1、在 Package.appxmanifest 中新增一個(gè)“聯(lián)系人選取器”聲明,并做相關(guān)配置* 2、在 App.xaml.cs 中 override void OnActivated(IActivatedEventArgs args),以獲取聯(lián)系人選取器的相關(guān)信息* * ContactPickerActivatedEventArgs - 通過“聯(lián)系人選取器”激活應(yīng)用程序時(shí)的事件參數(shù)* ContactPickerUI - 獲取 ContactPickerUI 對(duì)象* PreviousExecutionState, Kind, SplashScreen - 各種激活 app 的方式的事件參數(shù)基本上都有這些屬性,就不多說了* * ContactPickerUI - 自定義聯(lián)系人選取器的幫助類* SelectionMode - 獲取由 ContactPicker(調(diào)用者)設(shè)置的 SelectionMode 屬性* DesiredFields - 獲取由 ContactPicker(調(diào)用者)設(shè)置的 DesiredFields 屬性* AddContact(string id, Contact contact) - 選取一個(gè)聯(lián)系人* id - 聯(lián)系人標(biāo)識(shí)* contact - 一個(gè) Contact 對(duì)象* RemoveContact() - 刪除指定標(biāo)識(shí)的聯(lián)系人* ContainsContact() - 指定標(biāo)識(shí)的聯(lián)系人是否已被選取* ContactRemoved - 移除一個(gè)已被選取的聯(lián)系人時(shí)所觸發(fā)的事件* * Contact - 返回給調(diào)用者的聯(lián)系人對(duì)象* Name - 名稱* Thumbnail - 縮略圖* Fields - 聯(lián)系人的字段數(shù)據(jù),每一條數(shù)據(jù)都是一個(gè)實(shí)現(xiàn)了 IContactField 接口的對(duì)象* * ContactField - 實(shí)現(xiàn)了 IContactField 接口,用于描述聯(lián)系人的某一個(gè)字段數(shù)據(jù)* Type - 字段類型(ContactFieldType 枚舉)* Email, PhoneNumber, Location, InstantMessage, Custom* Category - 字段類別(ContactFieldCategory 枚舉)* None, Home, Work, Mobile, Other* Value - 字段的值*/using System; using Windows.ApplicationModel.Activation; using Windows.ApplicationModel.Contacts.Provider; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Navigation; using Windows.ApplicationModel.Contacts; using Windows.Storage.Streams; using Windows.UI.Core;namespace XamlDemo.Picker {public sealed partial class MyContactPicker : Page{private ContactPickerUI _contactPickerUI;public MyContactPicker(){this.InitializeComponent();}protected override void OnNavigatedTo(NavigationEventArgs e){// 獲取 ContactPickerUI 對(duì)象var contactPickerActivated = e.Parameter as ContactPickerActivatedEventArgs;_contactPickerUI = contactPickerActivated.ContactPickerUI;_contactPickerUI.ContactRemoved += _contactPickerUI_ContactRemoved; }protected override void OnNavigatedFrom(NavigationEventArgs e){_contactPickerUI.ContactRemoved -= _contactPickerUI_ContactRemoved;}// 從選取緩沖區(qū)移除后async void _contactPickerUI_ContactRemoved(ContactPickerUI sender, ContactRemovedEventArgs args){// 注意:無法直接得知 ContactPickerUI 是單選模式還是多選模式,需要判斷當(dāng)添加了一個(gè)聯(lián)系人后,再添加一個(gè)聯(lián)系人,如果系統(tǒng)會(huì)自動(dòng)移除前一個(gè)聯(lián)系人,則說明是單選模式await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>{lblMsg.Text += "removed contact: " + args.Id;lblMsg.Text += Environment.NewLine;});}private void btnAddContract_Click(object sender, RoutedEventArgs e){Random random = new Random();// 構(gòu)造一個(gè) Contact 對(duì)象Contact contact = new Contact();contact.Name = "webabcd " + random.Next(1000, 10000).ToString();contact.Fields.Add(new ContactField(random.Next(1000, 10000).ToString(), ContactFieldType.Email, ContactFieldCategory.Home));contact.Fields.Add(new ContactField(random.Next(1000, 10000).ToString(), ContactFieldType.Email, ContactFieldCategory.Work));contact.Fields.Add(new ContactField(random.Next(1000, 10000).ToString(), ContactFieldType.PhoneNumber, ContactFieldCategory.Home));contact.Fields.Add(new ContactField(random.Next(1000, 10000).ToString(), ContactFieldType.PhoneNumber, ContactFieldCategory.Work));contact.Thumbnail = RandomAccessStreamReference.CreateFromUri(new Uri("ms-appx:///Assets/Logo.png", UriKind.Absolute));string id = Guid.NewGuid().ToString();// 向選取緩沖區(qū)新增一個(gè)聯(lián)系人switch (_contactPickerUI.AddContact(id, contact)){case AddContactResult.Added: // 已被成功添加lblMsg.Text += "added contact: " + id;lblMsg.Text += Environment.NewLine;break;case AddContactResult.AlreadyAdded: // 選取緩沖區(qū)已有此聯(lián)系人lblMsg.Text += "already added contact: " + id;lblMsg.Text += Environment.NewLine;break;case AddContactResult.Unavailable: // 無效聯(lián)系人lblMsg.Text += "unavailable contact: " + id;lblMsg.Text += Environment.NewLine;break;}}} }


2、判斷程序是否是由聯(lián)系人選取器激活,在 App.xaml.cs 中 override void OnActivated(IActivatedEventArgs args)
App.xaml.cs

protected override void OnActivated(IActivatedEventArgs args) {// 通過聯(lián)系人選取器激活應(yīng)用程序時(shí)if (args.Kind == ActivationKind.ContactPicker){ContactPickerActivatedEventArgs contactPickerArgs = args as ContactPickerActivatedEventArgs;Frame rootFrame = new Frame();rootFrame.Navigate(typeof(MainPage), contactPickerArgs);Window.Current.Content = rootFrame;Window.Current.Activate();} }


3、通過聯(lián)系人選取器選擇聯(lián)系人。注:如果需要激活自定義的聯(lián)系人選取器,請(qǐng)?jiān)趶棾龅倪x取器窗口的左上角選擇對(duì)應(yīng) Provider
Picker/ContactPickerDemo.xaml

<Pagex:Class="XamlDemo.Picker.ContactPickerDemo"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="using:XamlDemo.Picker"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"mc:Ignorable="d"><Grid Background="Transparent"><StackPanel Margin="120 0 0 0"><TextBlock Name="lblMsg" FontSize="14.667" /><Image Name="imgThumbnail" Width="100" Height="100" HorizontalAlignment="Left" Margin="0 10 0 0" /><Button Name="btnPickContact" Content="pick a contact" Click="btnPickContact_Click" Margin="0 10 0 0" /><Button Name="btnPickContacts" Content="pick multiple contacts" Click="btnPickContacts_Click" Margin="0 10 0 0" /></StackPanel></Grid> </Page>

Picker/ContactPickerDemo.xaml.cs

/** 演示如何通過 ContactPicker 選擇一個(gè)或多個(gè)聯(lián)系人* * ContactPicker - 聯(lián)系人選擇窗口* CommitButtonText - 聯(lián)系人選擇窗口的確定按鈕的顯示文本,此按鈕默認(rèn)顯示的文本為“確定”* SelectionMode - 選取模式(ContactSelectionMode 枚舉)* Contacts - 請(qǐng)對(duì)我提供聯(lián)系人的全部字段的數(shù)據(jù),默認(rèn)值* Fields - 請(qǐng)對(duì)我提供指定字段的數(shù)據(jù)* DesiredFields - 當(dāng) SelectionMode.Fields 時(shí),請(qǐng)對(duì)我提供指定字段的數(shù)據(jù),字段名稱來自 KnownContactField 枚舉* PickSingleContactAsync() - 選取一個(gè)聯(lián)系人,返回 ContactInformation 對(duì)象* PickMultipleContactsAsync() - 選取多個(gè)聯(lián)系人,返回 ContactInformation 對(duì)象集合* * ContactInformation - 聯(lián)系人信息對(duì)象* Name, Emails, PhoneNumbers, Locations, InstantMessages, CustomFields* GetThumbnailAsync() - 獲取聯(lián)系人縮略圖*/using System; using System.Collections.Generic; using System.Linq; using Windows.ApplicationModel.Contacts; using Windows.Storage.Streams; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Media.Imaging; using XamlDemo.Common;namespace XamlDemo.Picker {public sealed partial class ContactPickerDemo : Page{public ContactPickerDemo(){this.InitializeComponent();}private async void btnPickContact_Click(object sender, RoutedEventArgs e){if (Helper.EnsureUnsnapped()){ContactPicker contactPicker = new ContactPicker();contactPicker.CommitButtonText = "確定";contactPicker.SelectionMode = ContactSelectionMode.Contacts;// 啟動(dòng)聯(lián)系人選取器,以選擇一個(gè)聯(lián)系人ContactInformation contact = await contactPicker.PickSingleContactAsync();if (contact != null){lblMsg.Text = "name: " + contact.Name;lblMsg.Text += Environment.NewLine;lblMsg.Text += "emails: " + string.Join(",", contact.Emails.Select(p => new { email = p.Value }));lblMsg.Text += Environment.NewLine;lblMsg.Text += "phoneNumbers: " + string.Join(",", contact.PhoneNumbers.Select(p => new { phoneNumber = p.Value }));IRandomAccessStreamWithContentType stream = await contact.GetThumbnailAsync();if (stream != null && stream.Size > 0){BitmapImage bitmap = new BitmapImage();bitmap.SetSource(stream);imgThumbnail.Source = bitmap;}}else{lblMsg.Text = "取消了";}}}private async void btnPickContacts_Click(object sender, RoutedEventArgs e){if (Helper.EnsureUnsnapped()){var contactPicker = new ContactPicker();// 啟動(dòng)聯(lián)系人選取器,以選擇多個(gè)聯(lián)系人IReadOnlyList<ContactInformation> contacts = await contactPicker.PickMultipleContactsAsync();if (contacts != null && contacts.Count > 0){ContactInformation contact = contacts[0];lblMsg.Text = "contacts count: " + contacts.Count.ToString();lblMsg.Text += Environment.NewLine;lblMsg.Text += "first contact name: " + contact.Name;lblMsg.Text += Environment.NewLine;lblMsg.Text += "first contact emails: " + string.Join(",", contact.Emails.Select(p => new { email = p.Value }));lblMsg.Text += Environment.NewLine;lblMsg.Text += "first contact phoneNumbers: " + string.Join(",", contact.PhoneNumbers.Select(p => new { phoneNumber = p.Value }));IRandomAccessStreamWithContentType stream = await contact.GetThumbnailAsync();if (stream != null && stream.Size > 0){BitmapImage bitmap = new BitmapImage();bitmap.SetSource(stream);imgThumbnail.Source = bitmap;}}else{lblMsg.Text = "取消了";}}}} }



OK
[源碼下載]

總結(jié)

以上是生活随笔為你收集整理的重新想象 Windows 8 Store Apps (27) - 选取器: 联系人选取窗口, 自定义联系人选取窗口...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。