Каков самый простой способ разбить большие файлы XAML в моем приложении?

Недавно я обнаружил, что могу использовать пользовательские элементы управления, чтобы уменьшить размер основного файла .xaml основного приложения. Я новичок в WPF и понял, что мое приложение XAML становится очень длинным, очень быстрым и громоздким для прокрутки.

Являются ли пользователи наиболее эффективными для решения этой проблемы (например, имеют множество пользовательских элементов управления и их шаблонов в отдельной библиотеке управления)?

Как вы управляете своим XAML?

Спасибо заранее!

Ответ 1

Вы правы, что разделение вещей на отдельные элементы управления может помочь уменьшить размер отдельных файлов xaml. Другой способ уменьшить размер файлов - использовать ResourceDictionaries. Когда вы разбиваете свои стили, шаблоны и ресурсы на отдельные ресурсы, вы можете значительно уменьшить размер вашего окна и управлять файлами xaml. Когда материал разбит, вы можете использовать функцию MergedDictionaries, чтобы получить доступ к стилям и шаблонам из любого места, где они вам нужны. Если определенный ресурс используется во многих окнах и элементах управления, вы также можете объединить его ResourceDictionary в ресурсы App.xaml, что позволяет использовать его из любого места в решении.

Лично мне нравится хранить каждый файл XAML примерно до ~ 300 или менее строк, после этого я вижу, есть ли лучший способ, которым я должен был его организовать. Здесь дополнительная информация и советы о том, как сохранить свои ресурсы.

Ответ 2

Кроме того, для тематики/стилизации избегайте вставки стилей на уровне управления/индивидуального уровня, скорее, тема .xaml обрабатывает скиннинг напрямую, таким образом, у вас нет раздувания информации о стиле в Xaml.

то есть. <MyControl Style="{StaticResource myControlStyle}"/> можно было бы избежать, непосредственно применяя стиль MyControl в файле темы, таким образом, у вас есть только <MyControl/> в Window.xaml

Ответ 3

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

Кроме того, DataTemplates также может быть полезен. Например, предположим, что у вас есть куча полей, которые необходимо ввести, и все эти поля имеют метки. В этом случае вы можете создать класс с двумя свойствами, один для метки и один для значения этого поля. Затем вы можете создать DataTemplate для этого класса, который привязывает метку к TextBlock и значение к TextBox. Если вы хотите, чтобы все ярлыки выстроились в линию, вы можете создать Grid SharedSizeScope. После этого вы можете создать ObservableCollection этого класса, заполнить коллекцию ярлыками и значениями, а затем установить для них ItemsSource элемента ItemsControl. После того, как вы получите начальную настройку этого процесса, формы ввода данных могут быть сгенерированы быстрее, чем в WinForms.