Windows Phone开发经验谈(11)-10种选择器详细介绍
启动器和选择器是做Windows phone开发绝对要了解的内容,这一次我准备先大家介绍下选择器,选择器是启动某个系统功能,用户在使用选择器后会将产生的数据回调给程序,举个简单的例子,假设我现在通过PhotoChooserTask选择器选择了一张图片,则用户在选择图片后会将选定的图片以数据流返回给我们的应用。
在Widows Phone 7中提供的选择器有下面几种:
SaveContactTask:保存联系方式
SaveEmailAddressTask:保存电子邮件地址
SavePhoneNumberTask:保存电话号码
SaveRingtoneTask:保存铃声
GameInviteTask:允许应用程序显示一个游戏邀请屏幕,该屏幕允许用户邀请玩家加入多玩家游戏会话。
AddressChooserTask: 选择联系人的地址
CameraCaptureTask:为程序提供拍照的功能
EmailAddressChooserTask:允许用户在联系人选择一个邮箱地址
PhoneNumberChooserTask:允许用户在联系人中选择一个电话号码
PhotoChooserTask:允许用户从照片库里选择一张照片。
当然,在使用这些选择器之前你需要引入Microsoft.Phone.Tasks 名空间,并且任何一个选择器都有个Completed事件,只有通过对该事件的处理,我们才能捕获到用户选择的数据。
GameInviteTask
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; } }
SaveRingtoneTask
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/HelloWord.mp3"); // appdata: 代表程序包内 // isostore:/myTone.mp3" isostore: 代表独立存储 // http://www.baidu.com/helloword.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; } }
SavePhoneNumberTask
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; } }
SaveEmailAddressTask
private void btnDemo_Click(object sender, RoutedEventArgs e) { _saveEmailAddressTask = new SaveEmailAddressTask(); _saveEmailAddressTask.Completed += new EventHandler<TaskEventArgs>(_saveEmailAddressTask_Completed); try { _saveEmailAddressTask.Email = "abc@msn.com"; _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; } }
SaveContactTask
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; } }
AddressChooserTask
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); } }
CameraCaptureTask
CameraCaptureTask cct = new CameraCaptureTask(); cct.Completed += new EventHandler<PhotoResult>(cct_Completed); cct.Show(); void cct_Completed(object sender, PhotoResult e) { BitmapImage bmp = new BitmapImage(); bmp.SetSource(e.ChosenPhoto); image1.Source = bmp; //image控件 }
EmailAddressChooserTask:
EmailAddressChooserTask eact = new EmailAddressChooserTask(); eact.Completed += new EventHandler<EmailResult>(eact_Completed); eact.Show(); void eact_Completed(object sender, EmailResult e) { var Block= e.Email; }
PhoneNumberChooserTask
PhoneNumberChooserTask pnct = new PhoneNumberChooserTask(); pnct.Completed += new EventHandler<PhoneNumberResult>(pnct_Completed); pnct.Show(); void pnct_Completed(object sender, PhoneNumberResult e) { var Block = e.PhoneNumber; }
PhotoChooserTask
PhotoChooserTask pct = new PhotoChooserTask(); pct.Completed += new EventHandler<PhotoResult>(pct_Completed); pct.Show(); void pct_Completed(object sender, PhotoResult e) { BitmapImage bmp = new BitmapImage(); bmp.SetSource(e.ChosenPhoto); image2.Source = bmp; }
是不是很简单...每个选择器都是设置好后通过show方法调用..然后通过Complete获取结果.