C # WPF MVVM Создание динамического представления - PullRequest
0 голосов
/ 05 октября 2018

Фон:

  • Я создаю очень гибкий инструмент управления данными.Основная идея заключается в том, что структура хранимых данных может быть сконфигурирована и поэтому не является жестко закодированной.Для визуализации, а также для ввода этих данных я использую специальные пользовательские контроли.Во время настройки структуры можно определить используемый пользовательский контроль для каждого свойства объекта данных.

Я создал короткий пример, чтобы прояснить ситуацию:

Давайте представим простую структуру данных, называемую Person, со свойствами Name, Age и Picture.Класс AC # может выглядеть так:

public class Person {
    public string Name {get; set;}
    public int Age {get; set;}
    public string Picture {get; set;}
}

Конфигурация для ввода - это три объекта типа TextBox.У одного нет правила проверки, у другого есть правило проверки для положительных целых чисел, а у другого - правило проверки для URI.

Конфигурация для отображения лица - это два TextBlocks для его имени и возраста и изображение для связаннойpicture.

Реальный вопрос

Я хочу создать вышеуказанный шаблон с приложением WPF, используя шаблон MVVM.Если структура данных известна, это прямая задача для ввода через DataTemplates.Для вывода это становится более сложным, но простое решение было бы немного кода позади.Однако другим способом будет перечисление с одним значением для каждого элемента управления пользователя.Затем модель представления должна распространять значение перечисления для каждого свойства, и элемент управления может быть выбран с помощью метода Setter.

Пока все хорошо, но теперь возникает сложная часть.Поскольку я не знаю, какие данные будут храниться и, следовательно, должны отображаться или вводиться, инструмент сможет динамически загружать дополнительные библиотеки DLL, которые могут содержать новые пользовательские элементы управления для новых типов данных.Я не хочу трогать мой оригинальный код, чтобы использовать эти дополнительные пользовательские контроли.Так что моя идея с перечислениями не будет работать, так как я не знаю всех возможных значений перечисления, и поэтому представление не может обработать эти случаи.Единственный способ, которым я вижу, - это добавить имя класса usercontrol для каждого свойства в ViewModel, а затем мой View каким-то образом вызывает эти usercontrols и отображает их.Это определенно нарушает схему MVVM.Ребята, вы знаете, как справиться с этой ситуацией.

Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...