2using System.Collections.ObjectModel;
3using System.Collections.Specialized;
4using System.Reflection;
5using Microsoft.Maui.Controls;
19 public required
string Key {
get;
set; }
24 public required DataTemplate
Template {
get;
set; }
29 public ObservableCollection<TemplateMapping> Templates {
get; }
32 public DataTemplate? DefaultTemplate {
get;
set; }
35 private Dictionary<string, DataTemplate>? templateMap;
39 this.Templates.CollectionChanged += this.OnTemplatesChanged;
42 void OnTemplatesChanged(
object? sender, NotifyCollectionChangedEventArgs e)
44 this.templateMap =
null;
47 protected override DataTemplate? OnSelectTemplate(
object item, BindableObject container)
50 this.templateMap ??= this.Templates
51 .Where(m => !
string.IsNullOrEmpty(m.Key) && m.Template is not
null)
52 .ToDictionary(m => m.Key!, m => m.Template!);
55 && !
string.IsNullOrEmpty(Field.Key)
56 &&
this.templateMap.TryGetValue(Field.Key, out DataTemplate? Template))
61 return this.DefaultTemplate;
ViewModel for a single property field of a LegalIdentity.
A single mapping of an ObservableFieldItem.Key → DataTemplate.
required string Key
The string key to match, e.g. Constants.CustomXmppProperties.Neuro_Id.
required DataTemplate Template
The template to use when an item’s Key equals Key.