UWP PersonPicture Control

Noch so ein neues Steuerelement in Windows 10 Fall Creators Update. Das PersonPicture Steuerelement. Es zeigt im Kern ein Bild rund beschnitten oder Initialen an. Typischer Einsatz Zweck: Login Control oder eine Personen Liste.

Dies macht Sinn um ein konsistentes Look&Feel über die WIndows Plattform und seine Apps zu erreichen. Allerdings ist das Control an manchen Stellen etwas seltsam und magisch gestrickt. So nutzt PersonPicture ein Attribut DisplayName, dessen Inhalt aber nirgends angezeigt wird. Nur wenn kein Bild vorhanden ist UND kein Attribut Initials, dann werden die beiden Anfangsbuchstaben als Initialen genommen. Wer denkt sich so was aus?

 

image

   1:   <StackPanel  Orientation="Horizontal">
   2:              <PersonPicture
   3:              DisplayName="Florian Silver" />
   4:              <PersonPicture
   5:              DisplayName="Anne Will"
   6:              Initials="AW" />
   7:              <PersonPicture
   8:              DisplayName="Babsi Tess"
   9:                  BadgeText="Sepp?"                />
  10:              <PersonPicture
  11:              DisplayName="Anne Will"
  12:              ProfilePicture="Assets\hannes.jpg"
  13:              Initials="AW"
  14:              BadgeNumber="99"/>
  15:              <PersonPicture Name="Test1" 
  16:                           BadgeGlyph="&#xe7bf;"
  17:                           ProfilePicture="Assets/hannes.jpg"
  18:                           DisplayName="Hannes Preishuber" 
  19:                           FlowDirection="RightToLeft"
  20:                         />
  21:              <PersonPicture Name="Test5" 
  22:                         BadgeImageSource="Assets/image02.png"
  23:                         ProfilePicture="Assets/hannes.jpg"
  24:                         DisplayName="Hannes Preishuber"
  25:                         Initials="HP"/>
  26:              <PersonPicture Name="Contact1"/>
  27:  </StackPanel>

Nur das Attribut BadgeText scheint gar keinen Anwendungsfall zu kennen.

Eine spannende Variante ist über die Eigenschaft Contact des PersonPictures zu erreichen. Man kann per Binding oder im Codebehind ein Contact Objekt zuweisen. Dies lässt sich auch über den Contact Picker durch den Benutzer auswählen. Das letzte Person Icon in der Liste wird so vom Anwender zugewiesen. Wenn man den C# Code bis Zeile 6 nimmt und das Objekt Contact aus dem ContactPicker dem PersonPicture zuweist, wird man kein Bild sehen, sondern nur die Initialen. Es braucht etwas mehr.

 

   1:  var cp = new ContactPicker();
   2:  cp.DesiredFieldsWithContactFieldType.Add(ContactFieldType.Email);
   3:  cp.DesiredFieldsWithContactFieldType.Add(ContactFieldType.Address);
   4:  cp.DesiredFieldsWithContactFieldType.Add(ContactFieldType.PhoneNumber);
   5:  Contact contact = await cp.PickContactAsync();
   6:  if (contact != null)
   7:      {
   8:      var contactStore = await ContactManager.RequestStoreAsync();
   9:      Contact mycontact = await contactStore.GetContactAsync(contact.Id);
  10:      Contact1.Contact = mycontact;
  11:       } 

Deshalb wird ab Zeile 8 aus dem ContactManager Objekt auf den ContactStore des Users zugegriffen. Dies benötigt aber  ein spezielles Recht Kontaktpersonen, das per Manifest Option zur Laufzeit angefordert wird. Der Benutzer erhält einen Dialog in dem er der App das Recht für Kontakte Zugriff einräumen muss.

image

Kommentare sind geschlossen