using Avalonia; using Avalonia.Controls; using Avalonia.Controls.Templates; using System.Linq; namespace SukiUI.Helpers; internal static class ViewLocator { private static IDataTemplate? _locator; /// /// Tries to build a suitable control using an appropriate DataTemplate provided by the App. /// /// /// A valid control provided by a suitable ViewLocator if available, otherwise returns an error TextBlock. internal static Control TryBuild(object? data) { if (data is string s) return new TextBlock() { Text = s }; _locator ??= Application.Current?.DataTemplates.FirstOrDefault(); return _locator?.Build(data) ?? new TextBlock() { Text = $"Unable to find suitable view for {data?.GetType().Name}" }; } }