Какой самый эффективный способ памяти для создания пользовательского элемента управления Button? - PullRequest
0 голосов
/ 06 июня 2018

Хорошо, я создал пользовательский элемент управления кнопками, и у него есть связанный файл xaml.Другой вариант - НЕ иметь связанный файл xaml, а просто определить внешний вид кнопки (в Generic.xaml).

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

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

UserControls и TemplatedControls ведут себя по-разному в этих случаях.UserControls анализирует свои XAML каждый раз, когда они создаются.TemplatedControls (обычно использующий генетический файл .xaml) анализирует их XAML только при первом создании любого экземпляра элементов управления, поэтому технически он должен быть более эффективным.

0 голосов
/ 06 июня 2018

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

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

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