個人圖片控制項會顯示個人的虛擬人偶影像 (如果有的話)。要是沒有,則顯示個人的縮寫名或一般字符。 你可以用這個控制項顯示 Contact 物件,一個管理聯絡資訊的物件,或者你也可以手動提供聯絡資訊,例如顯示名稱和頭像。
以下是兩個個人圖片控件,以及顯示用戶名稱的兩個 文本塊 元素。
這是正確的控制嗎?
當您想要表示一個人及其連絡人資訊時,請使用個人圖片。 例如,以下是您可能使用控制項的時機︰
- 顯示目前的使用者
- 顯示通訊錄中的連絡人
- 顯示訊息的寄件者
- 顯示社交媒體聯絡方式
此圖顯示聯絡人清單中的個人圖片控件: ![顯示聯繫人清單中的 [人員圖片] 控件的螢幕快照。](images/person-picture/person-picture-control.png)
建立人物圖片
- 重要 API:PersonPicture 類別
![]()
WinUI 3 圖庫應用程式包含互動式的 WinUI 控制項與功能範例。 你可以從 Microsoft Store下載 App,或在 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物件時,個人圖片控制會評估該物件,決定可顯示哪些資訊。
如果有可用影像,控制項會依照下列順序,顯示找到的第一個影像:
- 大型顯示圖
- 小型顯示圖片
- 縮圖
您可以將 PreferSmallImage 屬性設定為 true 來變更影像。這樣會讓 SmallDisplayPicture 的優先順序高於 LargeDisplayPicture。
如果沒有影像,控制項會顯示連絡人的名稱或縮寫名。如果沒有任何名稱資料,控制項會顯示連絡人資料,例如電子郵件地址或電話號碼。