Как вы управляете огромными и едва поддерживаемыми файлами XAML? - PullRequest
7 голосов
/ 05 ноября 2008

У меня реальные трудности с файлами XAML в Silverlight, так как они очень быстро увеличиваются при использовании Blend. Он просто становится стеной текста после добавления и анимации лишь нескольких элементов управления.

Я надеюсь, что скоро выйдет лучшая версия Blend, так что нашим дизайнерам никогда даже не придется видеть XAML. На данный момент, однако, это не решение - XAML по-прежнему необходимо управлять вручную, и это удручающая задача.

Кто-нибудь нашел решение этой проблемы? Как вы храните свои файлы XAML в порядке? Как вы понимаете их, когда они становятся большими?

Редактировать : я особенно заинтересован в решениях Silverlight, поскольку наиболее очевидное решение WPF - разбиение элементов на словари ресурсов - не поддерживается в Silverlight.

Ответы [ 3 ]

11 голосов
/ 05 ноября 2008

Требуется немного усилий для поддержки файлов XAML, но в основном вам нужно разделить их на файлы ресурсов (словари ресурсов XAML), используя схему, которая имеет смысл для вас.

Например, мы используем схему, где у нас есть структура папок, подобная этой:

  • Ресурсы (содержит файлы XAML, представляющие пользовательские элементы управления и страницы)

    • трафареты (файлы XAML с фигурами)
    • Стили (XAML файлы со стилями)
    • Кисти (...)
      • Общий
    • Шаблоны (...)

Ваша структура может отличаться, но разделение всех ресурсов в разных файлах действительно упрощает обслуживание в долгосрочной перспективе.

7 голосов
/ 07 ноября 2008

Я использую Silverlight 2 с января, когда он был в закрытом выпуске, и мы столкнулись с этой проблемой, весь наш XAML был в одном большом файле. В качестве передового опыта мы делали пользовательский интерфейс на отдельные пользовательские элементы управления на основе визуальной категоризации (верхний колонтитул, нижний колонтитул, элементы управления навигацией и т. Д.). Сначала мы пытались использовать вложенные холсты (сетки еще не были добавлены в структуру) и это превратилось в кошмар обслуживания позже.

В Blend вы можете выбрать Canvas / Grid и т. Д. В окне Objects and Timeline, щелкнуть по нему правой кнопкой мыши, и вам будет предоставлена ​​опция «Make Control». Это сделано для быстрого ре-факторинга и модульности наших основной файл XAML. Затем мы использовали События, чтобы пользовательские элементы управления могли общаться друг с другом.

Надеюсь, это поможет, и удачи!

2 голосов
/ 05 ноября 2008

Я креативный разработчик и много работаю в Blend.

В прошлом году я опубликовал несколько соображений о поддержании чистоты XAML .

Silverlight в настоящее время не поддерживает MergedResourceDictionaries, поэтому трудно разбить XAML на отдельные файлы ResourceDictionary, как я предлагал в другой публикации .

У Пола Стоуэлла также есть несколько интересных рекомендаций для XAML .

...