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 2012-07-10 15:58  豆浆咖啡  阅读(1823)  评论(1编辑  收藏  举报