Olá pessoal, tudo bom?

Segue um exemplo sobre como obter informações da sua lista de contatos armazenada no Windows Phone.

A primeira coisa a fazer é implementar uma classe para representar quais informações sobre os contatos você deseja obter, exibir e/ou manipular. No caso, criei uma classe chamada Contato.cs com a seguinte estrutura:


using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.UserData;

namespace Exemplo
{
  public class Contato
  {
    public object Foto { get; set; }
    public string Nome { get; set; }
    public string Telefone { get; set; }
    public string TelefoneCorrigido { get; set; }
  }
}

Em seguida, prepare a interface da APP, que para o exemplo, imaginei um listbox exibindo a foto, o nome da pessoa e o número do telefone celular dos contatos registrados atualmente no Windows Phone. Veja o exemplo:

...

 
   
     
   
   
     
     
   


 
   
   
 


 
   
   
   
     
       
         
           
             
             
           
           
         
       
     
   
 

...

E para concluir, vamos verificar qual a implementação necessária na classe em C# para que os dados possam ser bindados no listbox demonstrado acima.

...
using Microsoft.Phone.Controls;
using Microsoft.Phone.Tasks;
using Microsoft.Phone.UserData;
using System.Text.RegularExpressions;
using System.Windows.Media.Imaging;
using System.IO;
using System.Windows.Resources;

namespace Exemplo
{
  public partial class MainPage : PhoneApplicationPage
  {
    // Constructor
    public MainPage()
    {
      InitializeComponent();
      ListarContatos();
    }

    public void ListarContatos()
    {
      Contacts c = new Contacts();
      c.SearchCompleted += new EventHandler(c_SearchCompleted);
      c.SearchAsync(string.Empty, FilterKind.None, null);
    }

    void c_SearchCompleted(object sender, ContactsSearchEventArgs e)
    {
      //Trazendo apenas os contatos com números de telefone celular que contenham 8 números ou mais.
      var dados = from c in e.Results
          where c.PhoneNumbers.Count() > 0 &&
          c.PhoneNumbers.Where(x => x.Kind == PhoneNumberKind.Mobile).FirstOrDefault() != null &&
          c.PhoneNumbers.Where(x => x.Kind == PhoneNumberKind.Mobile).FirstOrDefault().PhoneNumber.Length >= 8
          select new Contato
                    {
                      Foto = ObterFoto(c.GetPicture()),
                      Nome = c.DisplayName,
                      Telefone = c.PhoneNumbers.Where(x=>x.Kind == PhoneNumberKind.Mobile).FirstOrDefault().PhoneNumber,
                    };
      lstContatos.ItemsSource = dados;

      txbAguarde.Visibility = System.Windows.Visibility.Collapsed;
      ppbAguarde.IsIndeterminate = false;
   }

   public object ObterFoto(Stream img)
   {
     if (img != null)
        return Microsoft.Phone.PictureDecoder.DecodeJpeg(img);
     else
     {
        //Obtendo uma imagem padrão quando o contato não tem foto.
        Uri uri = new Uri("Imagens/rosto.jpg", UriKind.Relative);
        StreamResourceInfo sri = Application.GetResourceStream(uri);
        return Microsoft.Phone.PictureDecoder.DecodeJpeg(sri.Stream);
     }
   }
  }
}
...
Exemplo em funcionamento no WP

Exemplo em funcionamento no WP

 

Espero que tenham gostado.

Grande abraço,
Eduardo Henrique Rizo (@eduardorizo)

Fonte: Blog do Eduardo H. Rizo

Post relacionado:

Curso Windows Phone Gratuito – Vários tópicos