Partilhar via


Cartão de contacto

O cartão de contacto apresenta informações de contacto, como nome, número de telefone e morada, para um Contacto (o mecanismo utilizado pelo Windows para representar pessoas e empresas). O cartão de contacto também permite ao utilizador editar as informações de contacto. Pode optar por exibir um cartão de contacto compacto ou um cartão de contacto completo que contenha informações adicionais.

APIs importantes: método ShowContactCard, método ShowFullContactCard, método IsShowContactCardSupported, classe Contact

Existem duas formas de mostrar o cartão de contacto:

  • Como um cartão de contacto padrão que aparece num flyout que pode ser descartado clicando fora dele. O cartão de contacto desaparece quando o utilizador clica fora da área do flyout.
  • Como um cartão de contacto completo que ocupa mais espaço e não pode ser fechado automaticamente — o utilizador deve clicar em fechar para o fechar.
Captura de ecrã que mostra um cartão de contacto padrão.
O cartão de contacto padrão
Captura de ecrã a mostrar um cartão de contacto completo.
O cartão de contacto completo

Será este o controlo correto?

Use o cartão de contacto quando quiser mostrar os dados de contacto de um contacto. Se quiser apenas mostrar o nome e a foto do contacto, use o controlo de imagem da pessoa.

Mostrar um cartão de contacto padrão

  1. Normalmente, mostra um cartão de contacto porque o utilizador clicou em algo: um botão ou talvez o controlo de imagem da pessoa. Não queremos esconder o elemento. Para evitar escondê-lo, precisamos de criar um Rect que descreva a localização e o tamanho do elemento.

    Vamos criar uma função utilitária que faça isso por nós — usaremos mais tarde.

    // Gets the rectangle of the element 
    public static Rect GetElementRectHelper(FrameworkElement element) 
    { 
        // Passing "null" means set to root element. 
        GeneralTransform elementTransform = element.TransformToVisual(null); 
        Rect rect = elementTransform.TransformBounds(new Rect(0, 0, element.ActualWidth, element.ActualHeight)); 
        return rect; 
    } 
    
    
  2. Determine se pode mostrar o cartão de contacto chamando o método ContactManager.IsShowContactCardSupported. Se não for suportado, mostre uma mensagem de erro. (Este exemplo assume que vai mostrar o cartão de contacto em resposta a um evento de clique.)

    // Contact and Contact Managers are existing classes 
    private void OnUserClickShowContactCard(object sender, RoutedEventArgs e) 
    { 
        if (ContactManager.IsShowContactCardSupported()) 
        { 
    
    
  3. Use a função utilitária que criou no passo 1 para obter os limites do controlo que disparou o evento (para não o cobrirmos com o cartão de contacto).

            Rect selectionRect = GetElementRect((FrameworkElement)sender); 
    
  4. Obtenha o objeto de contacto que quer mostrar. Este exemplo cria apenas um contacto simples, mas o teu código deve recuperar um contacto real.

                // Retrieve the contact to display
                var contact = new Contact(); 
                var email = new ContactEmail(); 
                email.Address = "jsmith@contoso.com"; 
                contact.Emails.Add(email); 
    
  5. Mostre o cartão de contacto ligando pelo método ShowContactCard .

            ContactManager.ShowFullContactCard(
                contact, selectionRect, Placement.Default); 
        } 
    } 
    

Aqui está o exemplo completo do código:

// Gets the rectangle of the element 
public static Rect GetElementRect(FrameworkElement element) 
{ 
    // Passing "null" means set to root element. 
    GeneralTransform elementTransform = element.TransformToVisual(null); 
    Rect rect = elementTransform.TransformBounds(new Rect(0, 0, element.ActualWidth, element.ActualHeight)); 
    return rect; 
} 
 
// Display a contact in response to an event
private void OnUserClickShowContactCard(object sender, RoutedEventArgs e) 
{ 
    if (ContactManager.IsShowContactCardSupported()) 
    { 
        Rect selectionRect = GetElementRect((FrameworkElement)sender);

        // Retrieve the contact to display
        var contact = new Contact(); 
        var email = new ContactEmail(); 
        email.Address = "jsmith@contoso.com"; 
        contact.Emails.Add(email); 
    
        ContactManager.ShowContactCard(
            contact, selectionRect, Placement.Default); 
    } 
} 

Mostrar um cartão de contacto completo

Para mostrar o cartão de contacto completo, ligue pelo método ShowFullContactCard em vez do ShowContactCard.

private void onUserClickShowContactCard() 
{ 
   
    Contact contact = new Contact(); 
    ContactEmail email = new ContactEmail(); 
    email.Address = "jsmith@hotmail.com"; 
    contact.Emails.Add(email); 
 
 
    // Setting up contact options.     
    FullContactCardOptions fullContactCardOptions = new FullContactCardOptions(); 
 
    // Display full contact card on mouse click.   
    // Launch the People’s App with full contact card  
    fullContactCardOptions.DesiredRemainingView = ViewSizePreference.UseLess; 
     
 
    // Shows the full contact card by launching the People App. 
    ContactManager.ShowFullContactCard(contact, fullContactCardOptions); 
} 

Recuperação de contactos "reais"

Os exemplos deste artigo criam um contacto simples. Numa aplicação real, provavelmente vais querer recuperar um contacto existente. Para instruções, consulte o artigo Contactos e calendário.