123456789101112131415161718192021222324252627282930313233 |
- using Avalonia.Controls;
- using Avalonia.Controls.Templates;
- using AvaloniaExample.ViewModels;
- using System;
- namespace AvaloniaExample
- {
- public class ViewLocator : IDataTemplate
- {
- public Control? Build(object? data)
- {
- if (data is null)
- return null;
- var name = data.GetType().FullName!.Replace("ViewModel", "View", StringComparison.Ordinal);
- var type = Type.GetType(name);
- if (type != null)
- {
- var control = (Control)Activator.CreateInstance(type)!;
- control.DataContext = data;
- return control;
- }
- return new TextBlock { Text = "Not Found: " + name };
- }
- public bool Match(object? data)
- {
- return data is ViewModelBase;
- }
- }
- }
|