/
dOJer113
/
Insect
Обзор
Документация
Войти
/
dOJer113
/
Insect
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
server
UI/ViewLocator.cs
43 строки
2 KB
aleks
UI
17 май 2025, 19:07
17 май 2025, 19:07
001c0e8
Код
Авторство
О чём код?
using System; using Avalonia.Controls; using Avalonia.Controls.Templates; using UI.ViewModels; namespace UI; /// <summary> /// Класс для динамического отображения представлений, соответствующих модели представления. /// </summary> public class ViewLocator : IDataTemplate { /// <summary> /// Строит представление для указанной модели представления. /// </summary> /// <param name="parAm">Модель представления, для которой нужно создать представление.</param> /// <returns>Представление, соответствующее модели представления</returns> public Control? Build(object? parAm) { if (parAm is null) return null; var name = parAm.GetType().FullName!.Replace("ViewModel", "View", StringComparison.Ordinal); var type = Type.GetType(name); if (type != null) { return (Control)Activator.CreateInstance(type)!; } return new TextBlock { Text = "Not Found: " + name }; } /// <summary> /// Проверяет, является ли переданный объект моделью представления. /// </summary> /// <param name="parData">Объект для проверки.</param> /// <returns><c>true</c>, если объект является моделью представления, иначе <c>false</c>.</returns> public bool Match(object? parData) { return parData is ViewModelBase; } }