與眾不同 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 = "11111111111"; _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 = "11111111111"; _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
[源碼下載]