鸿 网 互 联 www.68idc.cn

当前位置 : 服务器租用 > .net技术 > WinRT/Metro > >

选取器: 联系人选取窗口, 自定义联系人选取窗口

来源:互联网 作者:佚名 时间:2013-05-23 12:02
重新想象 Windows 8 Store Apps (27) - 选取器: 联系人选取窗口, 自定义联系人选取窗口Posted on [源码下载] 重新想象 Windows 8 Store Apps (27) - 选取器: 联系人选取窗口, 自定义联系人选取窗口 作者:webabcd 介绍 重新想象 Windows 8 Store Apps 之选取

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

[源码下载]


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



作者:webabcd


介绍
重新想象 Windows 8 Store Apps 之 选取器

  • ContactPicker - 联系人选取器
  • ContactPickerUI - 自定义联系人选取器


  • 示例
    演示如何通过 ContactPicker 选择一个或多个联系人,以及如何开发自定义联系人选取器

    1、 开发一个自定义联系人选取器
    Picker/MyContactPicker.xaml

    <Page x: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

    Picker/MyContactPicker.xaml.cs

    /* * 演示如何开发自定义的联系人选取器 * * 1、在 Package.appxmanifest 中新增一个“联系人选取器”声明,并做相关配置 * 2、在 App.xaml.cs 中 override void OnActivated(IActivatedEventArgs args),以获取联系人选取器的相关信息 * * ContactPickerActivatedEventArgs - 通过“联系人选取器”激活应用程序时的事件参数 * ContactPickerUI - 获取 ContactPickerUI 对象 * PreviousExecutionState, Kind, SplashScreen - 各种激活 app 的方式的事件参数基本上都有这些属性,就不多说了 * * ContactPickerUI - 自定义联系人选取器的帮助类 * SelectionMode - 获取由 ContactPicker(调用者)设置的 SelectionMode 属性 * DesiredFields - 获取由 ContactPicker(调用者)设置的 DesiredFields 属性 * AddContact(string id, Contact contact) - 选取一个联系人 * id - 联系人标识 * contact - 一个 Contact 对象 * RemoveContact() - 删除指定标识的联系人 * ContainsContact() - 指定标识的联系人是否已被选取 * ContactRemoved - 移除一个已被选取的联系人时所触发的事件 * * Contact - 返回给调用者的联系人对象 * Name - 名称 * Thumbnail - 缩略图 * Fields - 联系人的字段数据,每一条数据都是一个实现了 IContactField 接口的对象 * * ContactField - 实现了 IContactField 接口,虚拟主机,用于描述联系人的某一个字段数据 * 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 { MyContactPicker : Page { private ContactPickerUI _contactPickerUI; public MyContactPicker() { this.InitializeComponent(); } OnNavigatedTo(NavigationEventArgs e) { contactPickerActivated = e.Parameter as ContactPickerActivatedEventArgs; _contactPickerUI = contactPickerActivated.ContactPickerUI; _contactPickerUI.ContactRemoved += _contactPickerUI_ContactRemoved; } OnNavigatedFrom(NavigationEventArgs e) { _contactPickerUI.ContactRemoved -= _contactPickerUI_ContactRemoved; } _contactPickerUI_ContactRemoved(ContactPickerUI sender, ContactRemovedEventArgs args) { .Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { lblMsg.Text += + args.Id; lblMsg.Text += Environment.NewLine; }); } private void btnAddContract_Click(object sender, RoutedEventArgs e) { Random random = new Random(); // 构造一个 Contact 对象 Contact contact = new Contact(); contact.Name = + 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(, UriKind.Absolute)); string id = Guid.NewGuid().ToString(); (_contactPickerUI.AddContact(id, contact)) { case AddContactResult.Added: // 已被成功添加 lblMsg.Text += + id; lblMsg.Text += Environment.NewLine; break; case AddContactResult.AlreadyAdded: // 选取缓冲区已有此联系人 lblMsg.Text += + id; lblMsg.Text += Environment.NewLine; break; case AddContactResult.Unavailable: // 无效联系人 lblMsg.Text += + id; lblMsg.Text += Environment.NewLine; break; } } } }


    2、判断程序是否是由联系人选取器激活,香港服务器美国空间,在 App.xaml.cs 中 override void OnActivated(IActivatedEventArgs args)
    App.xaml.cs

    网友评论
    <