using Avalonia.Controls; using Avalonia.Controls.Templates; using CommunityToolkit.Mvvm.ComponentModel; using System; namespace Sln.Wcs.UI; public class ViewLocator : IDataTemplate { public Control? Build(object? param) { if (param is null) return new TextBlock { Text = "DataContext is null" }; var viewName = param.GetType().FullName! .Replace("ViewModels", "Views") .Replace("ViewModel", "Window"); var type = Type.GetType(viewName); if (type is null) return new TextBlock { Text = $"View not found: {viewName}" }; return (Control)Activator.CreateInstance(type)!; } public bool Match(object? data) { return data is ObservableObject; } }