原文:与众不同 windows phone (5) - Chooser(选择器)

[索引页]
[源码下载]

与众不同 windows phone (5) - Chooser(选择器)

作者:webabcd

介绍
与众不同 windows phone 7.5 (sdk 7.1) 之选择器

  • AddressChooserTask - 选择联系人的地址
  • EmailAddressChooserTask - 选择联系人的email
  • PhoneNumberChooserTask - 选择联系人的电话
  • SaveContactTask - 保存联系方式
  • SaveEmailAddressTask - 保存电子邮件地址
  • SavePhoneNumberTask - 保存电话号码
  • SaveRingtoneTask - 保存铃声
  • PhotoChooserTask - 从图库里选择照片
  • CameraCaptureTask - 相机拍照
  • GameInviteTask - 游戏邀请(邀请其他人加入我的游戏会话)

示例
1、AddressChooserTask 的 Demo
AddressChooserTask.xaml.cs

/*
* AddressChooserTask - 选择联系人的地址
* Completed - 选中地址之后所执行的事件
* Show() - 显示联系人列表
*
* TaskResult - 用户选择后的结果
* OK - 成功
* Cancel - 取消
* None - 失败
*
* AddressResult - Completed 事件的事件参数
* DisplayName - 联系人名称
* Address - 联系人的地址
*/ using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls; using Microsoft.Phone.Tasks; namespace Demo.Choosers
{
public partial class AddressChooserTaskDemo : PhoneApplicationPage
{
private AddressChooserTask _addressChooserTask; public AddressChooserTaskDemo()
{
InitializeComponent();
} private void btnDemo_Click(object sender, RoutedEventArgs e)
{
_addressChooserTask = new AddressChooserTask();
_addressChooserTask.Completed += new EventHandler<AddressResult>(_addressChooserTask_Completed); try
{
_addressChooserTask.Show();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
} void _addressChooserTask_Completed(object sender, AddressResult e)
{
if (e.TaskResult == TaskResult.OK)
{
MessageBox.Show("“" + e.DisplayName + "”的地址是:" + e.Address);
}
}
}
}

2、EmailAddressChooserTask 的 Demo
EmailAddressChooserTask.xaml.cs

/*
* EmailAddressChooserTask - 选择联系人的email
* Completed - 选中email之后所执行的事件
* Show() - 显示联系人列表
*
* TaskResult - 用户选择后的结果
* OK - 成功
* Cancel - 取消
* None - 失败
*
* EmailResult - Completed 事件的事件参数
* DisplayName - 联系人名称
* Email - 联系人的email
*/ using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls; using Microsoft.Phone.Tasks; namespace Demo.Choosers
{
public partial class EmailAddressChooserTaskDemo : PhoneApplicationPage
{
private EmailAddressChooserTask _emailAddressChooserTask; public EmailAddressChooserTaskDemo()
{
InitializeComponent();
} private void btnDemo_Click(object sender, RoutedEventArgs e)
{
_emailAddressChooserTask = new EmailAddressChooserTask();
_emailAddressChooserTask.Completed += new EventHandler<EmailResult>(_emailAddressChooserTask_Completed); try
{
_emailAddressChooserTask.Show();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
} void _emailAddressChooserTask_Completed(object sender, EmailResult e)
{
if (e.TaskResult == TaskResult.OK)
{
MessageBox.Show("“" + e.DisplayName + "”的email是:" + e.Email);
}
}
}
}

3、PhoneNumberChooserTask 的 Demo
PhoneNumberChooserTask.xaml.cs

/*
* PhoneNumberChooserTask - 选择联系人的电话
* Completed - 选中电话之后所执行的事件
* Show() - 显示联系人列表
*
* TaskResult - 用户选择后的结果
* OK - 成功
* Cancel - 取消
* None - 失败
*
* PhoneNumberResult - Completed 事件的事件参数
* DisplayName - 联系人名称
* PhoneNumber - 联系人的电话
*/ using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls; using Microsoft.Phone.Tasks; namespace Demo.Choosers
{
public partial class PhoneNumberChooserTaskDemo : PhoneApplicationPage
{
private PhoneNumberChooserTask _phoneNumberChooserTask; public PhoneNumberChooserTaskDemo()
{
InitializeComponent();
} private void btnDemo_Click(object sender, RoutedEventArgs e)
{
_phoneNumberChooserTask = new PhoneNumberChooserTask();
_phoneNumberChooserTask.Completed += new EventHandler<PhoneNumberResult>(_phoneNumberChooserTask_Completed); try
{
_phoneNumberChooserTask.Show();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
} void _phoneNumberChooserTask_Completed(object sender, PhoneNumberResult e)
{
if (e.TaskResult == TaskResult.OK)
{
MessageBox.Show("“" + e.DisplayName + "”的电话号码是:" + e.PhoneNumber);
}
}
}
}

4、SaveContactTask 的 Demo
SaveContactTask.xaml.cs

/*
* SaveContactTask - 保存联系方式
* Completed - 完成保存操作(成功、取消、失败)之后所执行的事件
* FirstName, MiddleName, LastName, Nickname, HomeAddressCity, HomeAddressCountry, HomeAddressState, HomeAddressStreet, HomeAddressZipCode, HomePhone, WorkAddressCity, WorkAddressCountry, WorkAddressState, WorkAddressStreet, WorkAddressZipCode, WorkEmail, WorkPhone, Suffix, Title, Website, JobTitle, Company, MobilePhone, PersonalEmail, OtherEmail, Notes
* Show() - 显示用于保存联系方式的窗口
*
* TaskResult - 任务结果
* OK - 成功
* Cancel - 取消
* None - 失败
*/ using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls; using Microsoft.Phone.Tasks; namespace Demo.Choosers
{
public partial class SaveContactTaskDemo : PhoneApplicationPage
{
private SaveContactTask _saveContactTask; public SaveContactTaskDemo()
{
InitializeComponent();
} private void btnDemo_Click(object sender, RoutedEventArgs e)
{
_saveContactTask = new SaveContactTask();
_saveContactTask.Completed += new EventHandler<SaveContactResult>(_saveContactTask_Completed); try
{
_saveContactTask.FirstName = "web";
_saveContactTask.LastName = "abcd";
_saveContactTask.MobilePhone = ""; _saveContactTask.Show();
}
catch (System.InvalidOperationException ex)
{
MessageBox.Show(ex.ToString());
}
} void _saveContactTask_Completed(object sender, SaveContactResult e)
{
switch (e.TaskResult)
{
case TaskResult.OK:
MessageBox.Show("保存成功");
break; case TaskResult.Cancel:
MessageBox.Show("取消保存");
break; case TaskResult.None:
MessageBox.Show("无法保存");
break;
}
}
}
}

5、SaveEmailAddressTask 的 Demo
SaveEmailAddressTask.xaml.cs

/*
* SaveEmailAddressTask - 保存电子邮件地址
* Completed - 完成保存操作(成功、取消、失败)之后所执行的事件
* Email - 需要保存的电子邮件地址
* Show() - 显示用于保存电子邮件地址的窗口
*
* TaskResult - 任务结果
* OK - 成功
* Cancel - 取消
* None - 失败
*/ using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls; using Microsoft.Phone.Tasks; namespace Demo.Choosers
{
public partial class SaveEmailAddressTaskDemo : PhoneApplicationPage
{
private SaveEmailAddressTask _saveEmailAddressTask; public SaveEmailAddressTaskDemo()
{
InitializeComponent();
} private void btnDemo_Click(object sender, RoutedEventArgs e)
{
_saveEmailAddressTask = new SaveEmailAddressTask();
_saveEmailAddressTask.Completed += new EventHandler<TaskEventArgs>(_saveEmailAddressTask_Completed); try
{
_saveEmailAddressTask.Email = "a@b.c"; _saveEmailAddressTask.Show();
}
catch (System.InvalidOperationException ex)
{
MessageBox.Show(ex.ToString());
}
} void _saveEmailAddressTask_Completed(object sender, TaskEventArgs e)
{
switch (e.TaskResult)
{
case TaskResult.OK:
MessageBox.Show("保存成功");
break; case TaskResult.Cancel:
MessageBox.Show("取消保存");
break; case TaskResult.None:
MessageBox.Show("无法保存");
break;
}
}
}
}

6、SavePhoneNumberTask 的 Demo
SavePhoneNumberTask.xaml.cs

/*
* SavePhoneNumberTask - 保存电话号码
* Completed - 完成保存操作(成功、取消、失败)之后所执行的事件
* PhoneNumber - 需要保存的电话号码
* Show() - 显示用于保存电话号码的窗口
*
* TaskResult - 任务结果
* OK - 成功
* Cancel - 取消
* None - 失败
*/ using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls; using Microsoft.Phone.Tasks; namespace Demo.Choosers
{
public partial class SavePhoneNumberTaskDemo : PhoneApplicationPage
{
private SavePhoneNumberTask _savePhoneNumberTask; public SavePhoneNumberTaskDemo()
{
InitializeComponent();
} private void btnDemo_Click(object sender, RoutedEventArgs e)
{
_savePhoneNumberTask = new SavePhoneNumberTask();
_savePhoneNumberTask.Completed += new EventHandler<TaskEventArgs>(_savePhoneNumberTask_Completed); try
{
_savePhoneNumberTask.PhoneNumber = ""; _savePhoneNumberTask.Show();
}
catch (System.InvalidOperationException ex)
{
MessageBox.Show(ex.ToString());
}
} void _savePhoneNumberTask_Completed(object sender, TaskEventArgs e)
{
switch (e.TaskResult)
{
case TaskResult.OK:
MessageBox.Show("保存成功");
break; case TaskResult.Cancel:
MessageBox.Show("取消保存");
break; case TaskResult.None:
MessageBox.Show("无法保存");
break;
}
}
}
}

7、SaveRingtoneTask 的 Demo
SaveRingtoneTask.xaml.cs

/*
* SaveRingtoneTask - 保存铃声
* Completed - 保存铃声之后所执行的事件
* Source - 铃声文件的地址
* IsShareable - 指示该铃声是否可被其他应用程序访问
* DisplayName - 铃声的名称(显示用)
* Show() - 显示保存铃声窗口
*
* TaskResult - 任务结果
* OK - 成功
* Cancel - 取消
* None - 失败
*/ using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls; using Microsoft.Phone.Tasks; namespace Demo.Choosers
{
public partial class SaveRingtoneTaskDemo : PhoneApplicationPage
{
private SaveRingtoneTask _saveRingtoneChooser; public SaveRingtoneTaskDemo()
{
InitializeComponent();
} private void btnDemo_Click(object sender, RoutedEventArgs e)
{
_saveRingtoneChooser = new SaveRingtoneTask();
_saveRingtoneChooser.Completed += new EventHandler<TaskEventArgs>(_saveRingtoneChooser_Completed); try
{
_saveRingtoneChooser.Source = new Uri("appdata:/Assets/SuperMario.mp3"); // appdata: 代表程序包内
// saveRingtoneChooser.Source = new Uri("isostore:/myTone.mp3"); // isostore: 代表独立存储
// _saveRingtoneChooser.Source = new Uri("http://a.b.c/d.mp3"); // 网络地址
_saveRingtoneChooser.IsShareable = true; _saveRingtoneChooser.DisplayName = "超级马里奥铃声"; _saveRingtoneChooser.Show();
}
catch (System.InvalidOperationException ex)
{
MessageBox.Show(ex.ToString());
}
} void _saveRingtoneChooser_Completed(object sender, TaskEventArgs e)
{
switch (e.TaskResult)
{
case TaskResult.OK:
MessageBox.Show("保存成功");
break; case TaskResult.Cancel:
MessageBox.Show("取消保存");
break; case TaskResult.None:
MessageBox.Show("无法保存");
break;
}
}
}
}

8、PhotoChooserTask 的 Demo
PhotoChooserTask.xaml.cs

/*
* PhotoChooserTask - 从图库里选择照片
* Completed - 选中照片之后所执行的事件
* Show() - 显示图库
*
* TaskResult - 任务结果
* OK - 成功
* Cancel - 取消
* None - 失败
*
* PhotoResult - Completed 事件的事件参数
* ChosenPhoto - 照片数据(System.IO.Stream 类型)
* OriginalFileName - 照片的文件名
*/ using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls; using Microsoft.Phone.Tasks; namespace Demo.Choosers
{
public partial class PhotoChooserTaskDemo : PhoneApplicationPage
{
private PhotoChooserTask _photoChooserTask; public PhotoChooserTaskDemo()
{
InitializeComponent();
} private void btnDemo_Click(object sender, RoutedEventArgs e)
{
_photoChooserTask = new PhotoChooserTask();
_photoChooserTask.Completed += new EventHandler<PhotoResult>(_photoChooserTask_Completed); try
{
_photoChooserTask.Show();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
} void _photoChooserTask_Completed(object sender, PhotoResult e)
{
if (e.TaskResult == TaskResult.OK)
{
System.Windows.Media.Imaging.BitmapImage bmp = new System.Windows.Media.Imaging.BitmapImage();
bmp.SetSource(e.ChosenPhoto);
img.Source = bmp;
}
}
}
}

9、CameraCaptureTask 的 Demo
CameraCaptureTask.xaml.cs

/*
* CameraCaptureTask - 相机拍照
* Completed - 拍照并确认之后所执行的事件
* Show() - 启动相机
*
* TaskResult - 任务结果
* OK - 成功
* Cancel - 取消
* None - 失败
*
* PhotoResult - Completed 事件的事件参数
* ChosenPhoto - 照片数据(System.IO.Stream 类型)
* OriginalFileName - 照片的文件名
*/ using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls; using Microsoft.Phone.Tasks; namespace Demo.Choosers
{
public partial class CameraCaptureTaskDemo : PhoneApplicationPage
{
private CameraCaptureTask _cameraCaptureTask; public CameraCaptureTaskDemo()
{
InitializeComponent();
} private void btnDemo_Click(object sender, RoutedEventArgs e)
{
_cameraCaptureTask = new CameraCaptureTask();
_cameraCaptureTask.Completed += new EventHandler<PhotoResult>(_cameraCaptureTask_Completed); try
{
_cameraCaptureTask.Show();
}
catch (System.InvalidOperationException ex)
{
MessageBox.Show(ex.ToString());
}
} void _cameraCaptureTask_Completed(object sender, PhotoResult e)
{
if (e.TaskResult == TaskResult.OK)
{
System.Windows.Media.Imaging.BitmapImage bmp = new System.Windows.Media.Imaging.BitmapImage();
bmp.SetSource(e.ChosenPhoto);
img.Source = bmp;
}
}
}
}

10、GameInviteTask 的 Demo
GameInviteTask.xaml.cs

/*
* GameInviteTask - 游戏邀请(邀请其他人加入我的游戏会话)
* Completed - 完成操作之后所执行的事件
* SessionId - 游戏的会话 ID
* Show() - 发出邀请
*
* TaskResult - 用户选择后的结果
* OK - 成功
* Cancel - 取消
* None - 失败
*/ using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls; using Microsoft.Phone.Tasks; namespace Demo.Choosers
{
public partial class GameInviteTaskDemo : PhoneApplicationPage
{
private GameInviteTask _gameInviteTask; public GameInviteTaskDemo()
{
InitializeComponent();
} private void btnDemo_Click(object sender, RoutedEventArgs e)
{
_gameInviteTask = new GameInviteTask();
_gameInviteTask.Completed += new EventHandler<TaskEventArgs>(_gameInviteTask_Completed); try
{
// 游戏需要在 Windows Phone 上的 Xbox LIVE 中发布,并且邀请人也要是 Xbox LIVE 的会员
_gameInviteTask.SessionId = "游戏的 session id";
_gameInviteTask.Show();
}
catch (System.InvalidOperationException ex)
{
MessageBox.Show(ex.ToString());
}
} void _gameInviteTask_Completed(object sender, TaskEventArgs e)
{
switch (e.TaskResult)
{
case TaskResult.OK:
MessageBox.Show("游戏邀请已发送");
break; case TaskResult.Cancel:
MessageBox.Show("游戏邀请已取消");
break; case TaskResult.None:
MessageBox.Show("游戏邀请无法发送");
break;
}
}
}
}

OK
[源码下载]

与众不同 windows phone (5) - Chooser(选择器)的更多相关文章

  1. 与众不同 windows phone 8.0 & 8.1 系列文章索引

    [源码下载] [与众不同 windows phone 7.5 (sdk 7.1) 系列文章索引] 与众不同 windows phone 8.0 & 8.1 系列文章索引 作者:webabcd ...

  2. 与众不同 windows phone (34) - 8.0 新的控件: LongListSelector

    [源码下载] 与众不同 windows phone (34) - 8.0 新的控件: LongListSelector 作者:webabcd 介绍与众不同 windows phone 8.0 之 新的 ...

  3. 与众不同 windows phone (35) - 8.0 新的启动器: ShareMediaTask, SaveAppointmentTask, MapsTask, MapsDirectionsTask, MapDownloaderTask

    [源码下载] 与众不同 windows phone (35) - 8.0 新的启动器: ShareMediaTask, SaveAppointmentTask, MapsTask, MapsDirec ...

  4. 与众不同 windows phone (36) - 8.0 新的瓷贴: FlipTile, CycleTile, IconicTile

    [源码下载] 与众不同 windows phone (36) - 8.0 新的瓷贴: FlipTile, CycleTile, IconicTile 作者:webabcd 介绍与众不同 windows ...

  5. 与众不同 windows phone (37) - 8.0 文件系统: StorageFolder, StorageFile, 通过 Uri 引用文件, 获取 SD 卡中的文件

    [源码下载] 与众不同 windows phone (37) - 8.0 文件系统: StorageFolder, StorageFile, 通过 Uri 引用文件, 获取 SD 卡中的文件 作者:w ...

  6. 与众不同 windows phone (38) - 8.0 关联启动: 使用外部程序打开一个文件或URI, 关联指定的文件类型或协议

    [源码下载] 与众不同 windows phone (38) - 8.0 关联启动: 使用外部程序打开一个文件或URI, 关联指定的文件类型或协议 作者:webabcd 介绍与众不同 windows ...

  7. 与众不同 windows phone (39) - 8.0 联系人和日历

    [源码下载] 与众不同 windows phone (39) - 8.0 联系人和日历 作者:webabcd 介绍与众不同 windows phone 8.0 之 联系人和日历 自定义联系人存储的增删 ...

  8. 与众不同 windows phone (40) - 8.0 媒体: 音乐中心的新增功能, 图片中心的新增功能, 后台音乐播放的新增功能

    [源码下载] 与众不同 windows phone (40) - 8.0 媒体: 音乐中心的新增功能, 图片中心的新增功能, 后台音乐播放的新增功能 作者:webabcd 介绍与众不同 windows ...

  9. 与众不同 windows phone (41) - 8.0 相机和照片: 通过 AudioVideoCaptureDevice 捕获视频和音频

    [源码下载] 与众不同 windows phone (41) - 8.0 相机和照片: 通过 AudioVideoCaptureDevice 捕获视频和音频 作者:webabcd 介绍与众不同 win ...

随机推荐

  1. 180China丨the Agency for Brand Engagement and Experience

    180China丨the Agency for Brand Engagement and Experience Welcome to 180. Welcome to Creativity. Thank ...

  2. ios创建画笔的样例(双笔画效果)

    定义一个UIView:主要是在这个View里面加一个UIImageView,绘图都在这个UIImageView里面进行 @property(nonatomic) CGPoint prePoint; / ...

  3. Linux高性能server编程——高级I/O函数

     高级I/O函数 pipe函数 pipe函数用于创建一个管道,实现进程间的通信. #include <unistd.h> int pipe(int pipefd[2]); 通过pipe ...

  4. Android灭亡论之Firefox OS操作系统出现

    今天是2014年7月1日,过几天就要到深圳实训去了,实训核心内容是Android开发.尽管Android现在很火,但作为程序猿的我们必须时刻保持清醒的头脑.我虽不是什么预言家,但近期接触的Androi ...

  5. Unity3d 网络编程(二)(Unity3d内建网络各项參数介绍)

    这里是全部Unity3d在网络中能用到相关的类及方法.纵观參数功能, Unity3d来写一个手游是不二的选择: RPC 能够传递的參数 int float string NetworkPlayer N ...

  6. InputStream中read()与read(byte[] b)

    原文:InputStream中read()与read(byte[] b) read()与read(byte[] b)这两个方法在抽象类InputStream中前者是作为抽象方法存在的,后者不是,JDK ...

  7. AES加密时抛出java.security.InvalidKeyException: Illegal key size or def

    原文:AES加密时抛出java.security.InvalidKeyException: Illegal key size or def 使用AES加密时,当密钥大于128时,代码会抛出 java. ...

  8. 基于visual Studio2013解决C语言竞赛题之0802图书信息查询

     题目 解决代码及点评 /* 功能:有一批图书,每本书有:书名(name),作者(author) , 编号(num),出版日期(date)四个数据, 希望输入后按书名的字母顺序将各书的记录排列好, ...

  9. Boost学习之可移植路径操作--filesystem

    Boost.Filesystem 库为对路径.文件和目录进行查询和操作提供了可移植的工具,已经被C++标准委员会接纳包含到TR2中. 编译 使用Boost.Filesystem 库之前要先编译它,请参 ...

  10. 新书:《Liferay Portal 6.1最佳实践门户网站建设》

    新书:<Liferay Portal 6.1最佳实践门户网站建设>   <Liferay Portal 6.1门户站点建设最佳实践>是国内第一本全面介绍Liferay Port ...