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

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

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

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

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


person Sander    schedule 05.11.2008    source источник
comment
Мой первый опыт работы с XAML - это поддержка устаревшего приложения. Это был адский кошмар. Самая большая проблема - это найти код, на который ссылается привязка. Буквально теряются часы на поиск источников кода. Да, мы знаем о View-Model. Я продолжаю читать о том, как просто и легко использовать XAML. Я уверен, что есть примеры приложений XAML, которые легко поддерживать. В моем случае LOE (часы и доллары), необходимые для обслуживания этого конкретного приложения, просто вне графика. Это был ужасный опыт.   -  person Doug Kimzey    schedule 21.08.2020


Ответы (3)


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

В Blend вы можете выбрать холст / сетку и т. Д. В окне «Объекты и временная шкала», щелкните его правой кнопкой мыши, и вам будет предложена опция «Сделать контроль». Это сделано для быстрого рефакторинга и модуляции нашего основного файла XAML. . Затем мы использовали события, чтобы позволить пользовательским элементам управления взаимодействовать друг с другом.

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

person FireWire    schedule 06.11.2008

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

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

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

    • Stencils (XAML files with Shapes)
    • Стили (файлы XAML со стилями)
    • Brushes ( ... )
      • Shared
    • Шаблоны (...)

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

person Pop Catalin    schedule 05.11.2008

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

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

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

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

person Alan Le    schedule 05.11.2008
comment
Предоставляемые вами ссылки больше не активны. - person vzczc; 18.05.2011