Карточка контактаContact card

Карта контакта отображает контактные данные, такие как имя, номер телефона и адрес контакта (механизм, который платформа Windows использует для представления пользователей и компаний).The contact card displays contact information, such as the name, phone number, and address, for a Contact (the mechanism Windows uses to represent people and businesses). Карточка контакта также позволяет пользователю редактировать контактные данные.The contact card also lets the user edit contact info. Можно выбрать, какую карточку следует отобразить: компактную карточку контакта или полную карточку контакта, которая содержит дополнительные сведения.You can choose to display a compact contact card, or a full contact card that contains additional information.

Важные API: метод ShowContactCard, метод ShowFullContactCard, метод IsShowContactCardSupported, класс ContactImportant APIs: ShowContactCard method, ShowFullContactCard method, IsShowContactCardSupported method, Contact class

Существуют два способа отображения карточки контакта:There are two ways to display the contact card:

  • В качестве стандартной карточки контакта, которая отображается во всплывающем элементе, который исчезает, то есть карточка контакта исчезает, когда пользователь щелкает вне ее области.As a standard contact card that appears in a flyout that is light-dismissable--the contact card dissapears when the user clicks outside of it.
  • В качестве полной карточки контакта, которая занимает больше пространства и не исчезает, то есть пользователь должен нажать кнопку Закрыть, чтобы она закрылась.As a full contact card that takes up more space and is not light-dismissable--the user must click close to close it.
Screenshot showing a standard contact card.
Стандартная карточка контактаThe standard contact card
Screenshot showing a full contact card.
Полная карточка контактаThe full contact card

Выбор правильного элемента управленияIs this the right control?

Используйте карточку контакта, если требуется отобразить контактные данные для контакта.Use the contact card when you want to display contact info for a contact. Если вам необходимо отобразить только имя контакта и изображение, используйте элемент управления аватаром пользователя.If you only want to display the contact's name and picture, use the person picture control.

Отображение стандартной карточки контактаShow a standard contact card

  1. Как правило, карточка контакта отображается, когда пользователь щелкает какой-то элемент: кнопку или, возможно, элемент управления аватаром пользователя.Typically, you show a contact card because the user clicked something: a button or perhaps the person picture control. Нам не нужно скрывать этот элемент.We don't want to hide the element. Чтобы он не скрывался, необходимо создать Rect, описывающий расположение и размер элемента.To avoid hiding it, we need to create a Rect that describes the location and size of the element.

    Давайте создадим служебную функцию для этого. Мы используем ее позже.Let's create a utility function that does that for us--we'll use it later.

    // 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. Определите, отображается ли карточка контакта путем вызова метода ContactManager.IsShowContactCardSupported.Determine whether you can display the contact card by calling the ContactManager.IsShowContactCardSupported method. Если этот способ не поддерживается, отобразите сообщение об ошибке.If it's not supported, display an error message. (В этом примере предполагается, что карточка контакта будет отображаться в ответ на событие щелчка.)(This example assumes that you'll be showing the contact card in response to a click event .)

    // Contact and Contact Managers are existing classes 
    private void OnUserClickShowContactCard(object sender, RoutedEventArgs e) 
    { 
        if (ContactManager.IsShowContactCardSupported()) 
        { 
    
    
  3. Используйте служебную функцию, которую вы создали на шаге 1, чтобы получить границы элемента управления, который активировал событие (чтобы не заслонить его карточкой контакта).Use the utility function you created in step 1 to get the bounds of the control that fired the event (so we don't cover it up with the contact card).

            Rect selectionRect = GetElementRect((FrameworkElement)sender); 
    
  4. Получите объект Contact для отображения.Get the Contact object you want to display. В этом примере создается простой контакт, но код должен извлекать фактический контакт.This example just creates a simple contact, but your code should retrieve an actual contact.

                // Retrieve the contact to display
                var contact = new Contact(); 
                var email = new ContactEmail(); 
                email.Address = "jsmith@contoso.com"; 
                contact.Emails.Add(email); 
    
  5. Отобразите карточку контакта, вызвав метод ShowContactCard.Show the contact card by calling the ShowContactCard method.

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

Далее представлен полный код примера.Here's the complete code example:

// 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); 
    } 
} 

Отображение полной карточки контактаShow a full contact card

Чтобы отобразить полную карточку контакта, вызовите метод ShowFullContactCard вместо метода ShowContactCard.To show the full contact card, call the ShowFullContactCard method instead of 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); 
} 

Извлечение "настоящих" контактовRetrieving "real" contacts

В примерах в этой статье выполняется создание простого контакта.The examples in this article create a simple contact. В настоящем приложении вам, вероятно, потребуется извлечь существующий контакт.In a real app, you'd probably want to retrieve an existing contact. Инструкции и приведены в статье Контакты и календарь.For instructions, see the Contacts and calendar article.