Поделиться через


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

Карта контакта отображает контактные данные, такие как имя, номер телефона и адрес контакта (механизм, который платформа Windows использует для представления пользователей и компаний). Карточка контакта также позволяет пользователю редактировать контактные данные. Можно выбрать, какую карточку следует отобразить: компактную карточку контакта или полную карточку контакта, которая содержит дополнительные сведения.

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

Существуют два способа отображения карточки контакта:

  • Как стандартная карточка контакта, которая отображается во всплывающем элементе, который является легким увольнением, карточка контакта исчезает, когда пользователь щелкает за ее пределами.
  • В качестве полной карточки контакта, которая занимает больше пространства и не исчезает, то есть пользователь должен нажать кнопку Закрыть, чтобы она закрылась.
Снимок экрана: стандартная карточка контакта.
Стандартная карточка контакта
Снимок экрана: полная карточка контакта.
Полная карточка контакта

Выбор правильного элемента управления

Используйте карточку контакта, если требуется отобразить контактные данные для контакта. Если вам необходимо отобразить только имя контакта и изображение, используйте элемент управления аватаром пользователя.

Отображение стандартной карточки контакта

  1. Как правило, карточка контакта отображается, когда пользователь щелкает какой-то элемент: кнопку или, возможно, элемент управления аватаром пользователя. Нам не нужно скрывать этот элемент. Чтобы он не скрывался, необходимо создать Rect, описывающий расположение и размер элемента.

    Давайте создадим служебную функцию для этого. Мы используем ее позже.

    // 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. Если этот способ не поддерживается, отобразите сообщение об ошибке. (В этом примере предполагается, что карточка контакта будет отображаться в ответ на событие щелчка.)

    // Contact and Contact Managers are existing classes 
    private void OnUserClickShowContactCard(object sender, RoutedEventArgs e) 
    { 
        if (ContactManager.IsShowContactCardSupported()) 
        { 
    
    
  3. Используйте служебную функцию, которую вы создали на шаге 1, чтобы получить границы элемента управления, который активировал событие (чтобы не заслонить его карточкой контакта).

            Rect selectionRect = GetElementRect((FrameworkElement)sender); 
    
  4. Получите объект Contact для отображения. В этом примере создается простой контакт, но код должен извлекать фактический контакт.

                // Retrieve the contact to display
                var contact = new Contact(); 
                var email = new ContactEmail(); 
                email.Address = "[email protected]"; 
                contact.Emails.Add(email); 
    
  5. Отобразите карточку контакта, вызвав метод ShowContactCard.

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

Далее представлен полный код примера.

// 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 = "[email protected]"; 
        contact.Emails.Add(email); 
    
        ContactManager.ShowContactCard(
            contact, selectionRect, Placement.Default); 
    } 
} 

Отображение полной карточки контакта

Чтобы отобразить полную карточку контакта, вызовите метод ShowFullContactCard вместо метода ShowContactCard.

private void onUserClickShowContactCard() 
{ 
   
    Contact contact = new Contact(); 
    ContactEmail email = new ContactEmail(); 
    email.Address = "[email protected]"; 
    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); 
} 

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

В примерах в этой статье выполняется создание простого контакта. В настоящем приложении вам, вероятно, потребуется извлечь существующий контакт. Инструкции и приведены в статье Контакты и календарь.