В рамках приложения, которое я создаю, я могу добавить несколько «подключаемых модулей» в «рабочее пространство», где они могут быть перегруппированы и повторно - по мере необходимости. Я хочу, чтобы каждый плагин мог регистрировать WorkspaceParameters (глобальные параметры, общие для всех подключаемых модулей) с помощью класса WorkspaceManager (через интерфейс IWorkspaceManager). Когда подключаемый модуль регистрирует глобальный параметр, WorkspaceManager сначала проверяет, зарегистрирован ли тот, у кого есть то же имя, которое уже было зарегистрировано, и если оно есть, плагин просто подписывается на уведомление, если он изменится. Если он не был создан уже с заданным именем, создается новый. Класс WorkspaceParameter в настоящее время выглядит следующим образом:Динамический дисплей управления с помощью Silverlight, PRISM и MVVM
public class WorkspaceParameter
{
public string Label { get; set; }
public Type ParameterType { get; set; }
public object Value { get; set; }
}
Я тогда вид в приложении, которое я хочу, чтобы отобразить каждый WorkspaceParameter для пользователя, чтобы иметь возможность изменить значение. Пользовательский интерфейс должен основываться на члене ParameterType каждого параметра WorkspaceParameter, и все параметры должны отображаться в StackPanel. Например, если Type является DateTime, я хочу отобразить текстовое поле с селектором календаря рядом с ним. Если это строка, простое текстовое поле с ярлыком рядом с ним и, наконец, на данный момент, если это тип перечисления, выпадающий список с доступными параметрами перечисления.
Как реализовать этот динамический просмотр с использованием принципов PRISM и MVVM?