Динамический дисплей управления с Silverlight, PRISM и MVVM - PullRequest
0 голосов
/ 06 января 2010

В рамках создаваемого мною приложения я могу добавить несколько «плагинов» в «рабочую область», где их можно изменить и при необходимости изменить их размер. Я хочу, чтобы каждый плагин мог регистрировать WorkspaceParameters (глобальные параметры, общие для всех плагинов) с классом WorkspaceManager (предоставляемым через интерфейс IWorkspaceManager). Когда плагин регистрирует глобальный параметр, WorkspaceManager сначала проверяет, зарегистрирован ли один с тем же именем, что и ранее, и, если он имеет, плагин просто подписывается на уведомление, если он изменяется. Если он еще не был создан с данным именем, создается новый. Класс WorkspaceParameter в настоящее время выглядит следующим образом:

public class WorkspaceParameter
{
    public string Label { get; set; }
    public Type ParameterType { get; set; }
    public object Value { get; set; }
}

Затем в приложении появляется представление о том, что я хочу отобразить каждый параметр WorkspaceParameter, чтобы пользователь мог изменить значение. Пользовательский интерфейс должен основываться на элементе ParameterType каждого WorkspaceParameter, а все параметры должны отображаться в StackPanel. Например, если типом является DateTime, я хочу отобразить текстовое поле с селектором календаря рядом с ним. Если это строка, простое текстовое поле с меткой рядом с ней и, наконец, на данный момент, если это тип перечисления, выпадающий список с доступными параметрами перечисления.

Как я могу реализовать это динамическое представление, используя принципы PRISM и MVVM?

1 Ответ

0 голосов
/ 27 марта 2010

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

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

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

...