原文:与众不同 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. BNU 26579 Andrew the Ant 【蚂蚁】

    链接: http://www.bnuoj.com/bnuoj/problem_show.php?pid=26579 http://www.bnuoj.com/bnuoj/contest_show.ph ...

  2. [Unity 3D] Unity 3D 性能优化 (一)

    听到过很多用Unity 3D开发游戏的程序员抱怨引擎效率太低,资源占用太高,包括我自己在以往项目的开发中也头疼过.最近终于有了空闲,可以仔细的研究一下该如何优化Unity 3D下的游戏性能.其实国外有 ...

  3. BZOJ 4059: [Cerc2012]Non-boring sequences ( )

    要快速在一段子序列中判断一个元素是否只出现一次 , 我们可以预处理出每个元素左边和右边最近的相同元素的位置 , 这样就可以 O( 1 ) 判断. 考虑一段序列 [ l , r ] , 假如我们找到了序 ...

  4. NGINX服务器打开目录浏览功能

    我们做文件服务器的时候,希望打开目录浏览的功能.但是Nginx默认是不允许列出目录功能的.若需要此功能,需要在配置文件中手动开启. 首先需要打开开关.autoindex on;autoindex_ex ...

  5. session临时文件存储路径

    今天把本地的项目部署到外网时,遇到个问题,使用session_start()时,提示****目录下的这个文件不存在,网上查了查,说我的根目录不存在,然后在php.ini文件里看了下session.sa ...

  6. JavaScript下全选反选的Demo程序里实现checkmeonly函数 DOM

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. 06-UIKit(tableView数据模型)

    目录: 一.UIPageControl 二.table view数据模型 三.反向传值给TableView并更新 回到顶部 一.UIPageControl在页面下显示点 1 重要属性 .numberO ...

  8. Maven和Eclipse联合开发(转)

    最近公司突然把以前的架构推到从来,这个还真需要勇气,不过也是的,基础不好,再好的房子也站不稳.公司采用Maven作为项目管理,WebService项目框架采用SDHI.(Spring+Dubbo+He ...

  9. haproxy /admin跳转 不会在接口上再次加上admin

    http://www.xx.com/admin/api/menu [root@wx03 mojo]# cat test.pl use Mojolicious::Lite; use JSON qw/en ...

  10. 怎样在android实现uc和墨迹天气那样的左右拖动效果

    import android.app.Activity; import android.os.Bundle; import android.content.Context; import androi ...