個人圖片控制項

個人圖片控制項會顯示個人的虛擬人偶影像 (如果有的話)。要是沒有,則顯示個人的縮寫名或一般字符。 您可以使用控制項來顯示 Contact 物件 (管理個人連絡資訊的物件),也可以手動提供連絡人資訊,例如顯示名稱和設定檔圖片。

以下為兩個人的圖片控制項,伴隨兩個顯示使用者名稱的文字區塊元素。

Screenshot of the person picture control.

這是正確的控制項嗎?

當您想要表示一個人及其連絡人資訊時,請使用個人圖片。 例如,以下是您可能使用控制項的時機︰

  • 顯示目前的使用者
  • 顯示通訊錄中的連絡人
  • 顯示訊息的寄件者
  • 顯示社交媒體連絡人

圖中顯示連絡人清單中的人物圖片控制項:Screenshot that shows the Person Picture control in a list of contacts.

UWP 和 WinUI 2

重要

本文中的資訊和範例針對使用 Windows App SDKWinUI 3 的應用程式進行了最佳化,但通常適用於使用 WinUI 2 的 UWP 應用程式。 如需平台特定資訊和範例,請參閱 UWP API 參考。

本節包含您在 UWP 或 WinUI 2 應用程式中使用控制項所需的資訊。

UWP 應用程式的 PersonPicture 控制項包含在 Windows UI 程式庫 2 中。 如需詳細資訊 (包括安裝指示),請參閱 Windows UI 程式庫。 此控制項的 API 同時位於 Windows.UI.Xaml.ControlsMicrosoft.UI.Xaml.Controls 命名空間中。

我們建議使用最新的 WinUI 2 來取得所有控制項的最新樣式、範本和功能。

若要在 WinUI 2 中使用本文中的程式碼,請在 XAML 中使用別名 (我們使用 muxc) 來表示專案中包含的 Windows UI 程式庫 API。 如需詳細資訊,請參閱開始使用 WinUI 2

xmlns:muxc="using:Microsoft.UI.Xaml.Controls"

<muxc:PersonPicture />

建立人物圖片

WinUI 3 資源庫應用程式包含大多數 WinUI 3 控制項和功能的互動式範例。 從 Microsoft Store 取得應用程式,或在 GitHub 上取得原始程式碼

若要建立個人圖片,您可以使用 PersonPicture 類別。 此範例建立 PersonPicture 控制項,並手動提供個人的顯示名稱、設定檔圖片和縮寫名:

<PersonPicture
    DisplayName="Betsy Sherman"
    ProfilePicture="Assets\BetsyShermanProfile.png"
    Initials="BS" />

使用個人圖片控制項來顯示的 Contact 物件

您可以使用人物圖片控制項來顯示 Contact 物件:

<Page
    x:Class="SampleApp.PersonPictureContactExample"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:SampleApp"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <StackPanel Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

        <PersonPicture
            Contact="{x:Bind CurrentContact, Mode=OneWay}" />

        <Button Click="LoadContactButton_Click">Load contact</Button>
    </StackPanel>
</Page>
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
using Windows.ApplicationModel.Contacts;

namespace SampleApp
{
    public sealed partial class PersonPictureContactExample : Page, System.ComponentModel.INotifyPropertyChanged
    {
        public PersonPictureContactExample()
        {
            this.InitializeComponent();
        }

        private Windows.ApplicationModel.Contacts.Contact _currentContact;
        public Windows.ApplicationModel.Contacts.Contact CurrentContact
        {
            get => _currentContact;
            set
            {
                _currentContact = value;
                PropertyChanged?.Invoke(this,
                    new System.ComponentModel.PropertyChangedEventArgs(nameof(CurrentContact)));
            }

        }
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

        public static async System.Threading.Tasks.Task<Windows.ApplicationModel.Contacts.Contact> CreateContact()
        {

            var contact = new Windows.ApplicationModel.Contacts.Contact();
            contact.FirstName = "Betsy";
            contact.LastName = "Sherman";

            // Get the app folder where the images are stored.
            var appInstalledFolder =
                Windows.ApplicationModel.Package.Current.InstalledLocation;
            var assets = await appInstalledFolder.GetFolderAsync("Assets");
            var imageFile = await assets.GetFileAsync("betsy.png");
            contact.SourceDisplayPicture = imageFile;

            return contact;
        }

        private async void LoadContactButton_Click(object sender, RoutedEventArgs e)
        {
            CurrentContact = await CreateContact();
        }
    }
}

注意

為了保持程式碼簡單瞭解,此範例建立新的 Contact 物件。 在實際的應用程式中,您可以讓使用者選取連絡人,或使用 ContactManager 來查詢連絡人清單。 如需擷取和管理連絡人的詳細資訊,請參閱連絡人和行事曆文章

決定要顯示哪些資訊

當您提供 Contact 物件時,個人圖片控制項會進行評估,判斷該物件可以顯示哪些資訊。

如果有可用影像,控制項會依照下列順序,顯示找到的第一個影像:

  1. LargeDisplayPicture
  2. SmallDisplayPicture
  3. 縮圖

您可以將 PreferSmallImage 屬性設定為 true 來變更影像。這樣會讓 SmallDisplayPicture 的優先順序高於 LargeDisplayPicture。

如果沒有影像,控制項會顯示連絡人的名稱或縮寫名。如果沒有任何名稱資料,控制項會顯示連絡人資料,例如電子郵件地址或電話號碼。

取得範例程式碼