wpf: проблема с usercontrol и customcontrol - PullRequest
2 голосов
/ 25 марта 2010

Какой из них лучше с точки зрения производительности или пользовательского контроля? Прямо сейчас я использую пользовательский элемент управления. В определенном сценарии я создаю около 200 (приблизительно) различных экземпляров этого элемента управления, но при загрузке он немного медленный, и мне нужно подождать не менее 20-30 секунд для завершения операции. Что я должен сделать, чтобы увеличить производительность?

Edit:

Сценарий: В моем окне у меня есть TreeView, каждый элемент которого представляет разные определяемые пользователем типы, поэтому я определил DataTemplate для каждого типа. Эти шаблоны данных используют пользовательские элементы управления, и эти пользовательские элементы управления связаны со свойствами определенных пользователем типов. Как просто, TreeView отображает иерархическую структуру данных пользовательских типов. Теперь я читаю из Xml, создаю иерархическую структуру и назначаю ее TreeView, и загрузка занимает много времени. Любая помощь?

Ответы [ 5 ]

3 голосов
/ 08 июля 2010

У меня есть приложение, которое загружает около 500 сотен маленьких элементов управления. Мы изначально создали их как пользовательские элементы управления, но загрузка baml, кажется, заставляет элементы управления загружаться медленно (каждый из них действительно быстрый, но когда мы получаем около 300, общее количество всех этих элементов вместе складывается). Пользовательские элементы управления также занимают много памяти. Мы переключили их на пользовательские элементы управления, и приложение запускается почти в два раза быстрее и занимает около 1/3 оперативной памяти. Не говоря уже о том, что так будет всегда, но пользовательские элементы управления имели для нас большое значение.

2 голосов
/ 25 марта 2010

К вашему сведению: вот ссылка на использование VirtualizingPanel с TreeView: http://msdn.microsoft.com/en-us/library/cc716882.aspx

0 голосов
/ 16 марта 2016

Я работал в Microsoft, и мне не разрешили использовать UserControl из-за его низкой производительности. Мы всегда создавали элементы управления в C #. Не уверен насчет производительности DataTemplates, но мне интересно узнать, лучше ли это. Я подозреваю, что это так.

0 голосов
/ 11 мая 2010

Вот статья о моих проблемах с панелью стека виртуализации WPF и TreeView. Я надеюсь, что это поможет вам.

http://lucisferre.net/2010/04/21/virtualizing-stack-panel-wpf-part-duex/

Короче говоря: навигация возможна с текущим VSP, но это немного хак. Текущий дизайн VSP требует доработки, так как способ виртуализации View в настоящее время нарушает связь между View и ViewModel, что, в свою очередь, разрушает всю концепцию MVVM.

0 голосов
/ 25 марта 2010

Убедитесь, что SuspendLayout при массовом добавлении элементов управления. Попробуйте полностью настроить элемент управления перед добавлением его в любой контейнер.

...