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获取结果.

 

posted on   豆浆咖啡  阅读(1829)  评论(1编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
< 2012年7月 >
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 1 2 3 4
5 6 7 8 9 10 11

统计

点击右上角即可分享
微信分享提示