/
d4nil
/
Konenkov_2413_software_engineering_
Обзор
Документация
Войти
/
d4nil
/
Konenkov_2413_software_engineering_
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
Interface/ViewLocator.cs
42 строки
1 KB
Konenkov Daniel
feat: связать прошлый проект с server
16 дек 2025, 10:15
16 дек 2025, 10:15
e07dc22
Код
Авторство
О чём код?
using System; using Avalonia.Controls; using Avalonia.Controls.Templates; using Interface.ViewModels; namespace Interface; /// <summary> /// Шаблон для автоматического сопоставления ViewModel с соответствующим View /// </summary> public class ViewLocator : IDataTemplate { /// <summary> /// Создает View для указанной ViewModel /// </summary> /// <param name="parAm">Экземпляр ViewModel, для которого нужно /// создать View. Должен быть производным от ViewModelBase</param> 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> /// Определяет, может ли данный ViewLocator создать View для указанного объекта данных /// </summary> /// <param name="parData">Объект данных для проверки</param> public bool Match(object? parData) { return parData is ViewModelBase; } }