2010-01-06 2 views
0

В рамках приложения, которое я создаю, я могу добавить несколько «подключаемых модулей» в «рабочее пространство», где они могут быть перегруппированы и повторно - по мере необходимости. Я хочу, чтобы каждый плагин мог регистрировать 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?

ответ

0

Я бы порекомендовал вам взглянуть на серию Blogpost от Glenn Block. В последней статье он реорганизовал свое решение для использования шаблона mvvm. Он использует MEF в значительной степени, это основа для extensibilty.

Это номер 5 сиквела, пожалуйста, прочитайте все, что он может быть в основном тем, что вы искали.

http://msmvps.com/blogs/theproblemsolver/archive/2009/02/18/getting-started-with-the-repository-pattern-in-silverlight.aspx

Смежные вопросы