Udostępnij przez


Wizytówka

Karta kontaktowa wyświetla informacje kontaktowe, takie jak imię i nazwisko, numer telefonu i adres kontaktu (mechanizm używany przez system Windows do reprezentowania osób i firm). Karta kontaktowa umożliwia również użytkownikowi edytowanie informacji kontaktowych. Możesz wybrać wyświetlanie kompaktowej karty kontaktowej lub pełnej karty kontaktowej zawierającej dodatkowe informacje.

Ważne interfejsy API: metoda ShowContactCard, metoda ShowFullContactCard, IsShowContactCardSupported,klasa Contact

Istnieją dwa sposoby wyświetlania karty kontaktowej:

  • ** Jako standardowa karta kontaktowa wyświetlana w wysuwanym oknie, które można z łatwością zamknąć — karta kontaktowa znika, gdy użytkownik kliknie poza okno.
  • Jako pełna karta kontaktowa, która zajmuje więcej miejsca i nie jest łatwa do odrzucenia — użytkownik musi kliknąć zamknij, aby ją zamknąć.
Zrzut ekranu przedstawiający standardową kartę kontaktową.
Standardowa karta kontaktowa
Zrzut ekranu przedstawiający pełną kartę kontaktową.
Pełna karta kontaktowa

Czy jest to właściwa kontrola?

Użyj karty kontaktowej, jeśli chcesz wyświetlić informacje kontaktowe dla kontaktu. Jeśli chcesz wyświetlić tylko imię i nazwisko kontaktu, użyj kontrolki obrazu osoby.

Pokaż standardową kartę kontaktową

  1. Zazwyczaj wyświetlasz kartę kontaktową, ponieważ użytkownik kliknął coś: przycisk lub kontrolkę zdjęcia osoby. Nie chcemy ukrywać elementu. Aby uniknąć jego ukrywania, musimy utworzyć rect opisujący lokalizację i rozmiar elementu.

    Utwórzmy funkcję narzędzia, która robi to dla nas — użyjemy jej później.

    // 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. Określ, czy możesz wyświetlić kartę kontaktową, wywołując metodę ContactManager.IsShowContactCardSupported . Jeśli nie jest obsługiwana, wyświetl komunikat o błędzie. (W tym przykładzie przyjęto założenie, że w odpowiedzi na zdarzenie kliknięcia zostanie wyświetlona karta kontaktowa).

    // Contact and Contact Managers are existing classes 
    private void OnUserClickShowContactCard(object sender, RoutedEventArgs e) 
    { 
        if (ContactManager.IsShowContactCardSupported()) 
        { 
    
    
  3. Użyj funkcji pomocniczej utworzonej w kroku 1, aby uzyskać granice kontrolki, która zainicjowała zdarzenie (aby nie zakrywać jej kartą kontaktową).

            Rect selectionRect = GetElementRect((FrameworkElement)sender); 
    
  4. Pobierz obiekt Contact , który chcesz wyświetlić. W tym przykładzie wystarczy utworzyć prosty kontakt, ale kod powinien pobrać rzeczywisty kontakt.

                // Retrieve the contact to display
                var contact = new Contact(); 
                var email = new ContactEmail(); 
                email.Address = "jsmith@contoso.com"; 
                contact.Emails.Add(email); 
    
  5. Pokaż kartę kontaktową, wywołując metodę ShowContactCard .

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

Oto kompletny przykład kodu:

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

Pokaż pełną kartę kontaktową

Aby wyświetlić pełną kartę kontaktową, wywołaj metodę ShowFullContactCard zamiast 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); 
} 

Pobieranie "rzeczywistych" kontaktów

Przykłady w tym artykule tworzą prosty kontakt. W prawdziwej aplikacji prawdopodobnie chciałbyś wyszukać istniejący kontakt. Aby uzyskać instrukcje, zobacz artykuł Kontakty i kalendarz.