Какой самый простой способ разбить большие файлы XAML в моем приложении? - PullRequest
10 голосов
/ 04 июня 2009

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

Являются ли пользовательские элементы управления лучшим способом решения этой проблемы (т. Е. Имеют много пользовательских элементов управления и их шаблоны в отдельной библиотеке элементов управления)?

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

Заранее спасибо!

Ответы [ 3 ]

9 голосов
/ 04 июня 2009

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

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

1 голос
/ 05 июня 2009

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

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

1 голос
/ 04 июня 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...