Композитное приложение Silverlight - PullRequest
0 голосов
/ 13 июля 2011

Я пытаюсь выяснить, что было бы лучшим решением проблемы, с которой я столкнулся. У меня есть приложение Silverlight, которое должно состоять из разных модулей. Я могу использовать Prism, размещать регионы и загружать модули и заполнять регионы загруженными модулями, но в моей ситуации этого недостаточно. Вот что я хочу сделать:

  • Для большинства представлений, которые загружаются из разных файлов xap, я должен поместить элемент где-то в оболочке, который будет выполнять навигацию к динамически загружаемому представлению.
  • Этот элемент (который связан с динамически загружаемым представлением) должен поддерживать локализацию и должен иметь динамически назначаемые шаблоны данных, разные ссылки на модули должны иметь различный контент / шаблон данных (я думаю, написание шаблонов данных в файлах xaml на сервере и чтение их из silverlight через XamlReader, может есть лучший способ?).
  • Отображение Uri и журнал браузера должны работать с навигацией. Механизм навигации Silverlight по умолчанию лучше соответствует моим потребностям, чем тот, который есть в Prism.
  • Архитектура должна поддерживать MVVM.

Я думаю, вот и все. Я просто не мог придумать хорошую архитектуру, которая удовлетворит все мои потребности. Любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 13 июля 2011

Я не знаю ни одного продукта / решения, которое бы отвечало всем вашим требованиям, поэтому вот несколько комментариев к каждому:

  1. Если одна область оболочки имеет регион, который поддерживает несколько элементов, вы просто регистрируете элемент управления типа ссылка / кнопка и т. Д. С тем же именем региона в каждом модуле. Например, мы регистрируем представления на основе Telerik TadRibbonTab (вместо UserControl) с областью с именем «views», которая представляет собой RibbonBarTab с областью с именем «views». Каждый модуль добавляет свою собственную кнопку в список. Вы можете сделать то же самое с любым контейнером из нескольких элементов.
  2. Локализация - это совершенно другая проблема, и ее можно решить несколькими способами. Смотрите мой ответ здесь: Загрузка ресурсов ".resx" из папки в Silverlight
  3. Пользовательский навигационный маппер может быть настроен так, чтобы он вел себя как стандартный, не мешая поддержке областей Prism. Тот, который мы создали, кодирует информацию GUI, такую ​​как текущий выбор (текущий вид, выбор элементов и т. Д.) В URL. Это означает, что мы полностью контролируем состояние, а URL-адрес контролирует состояние.
  4. Вряд ли что-то мешает вам использовать MVVM, поскольку это одна небольшая функция для отделения представлений от данных с выделенным кодом.

Мне будет интересно, какие другие решения предлагаются, так как мы всегда ищем новые идеи.

...