У меня есть такой код:
<ListBox ItemsSource="{Binding Items}">
<ListBox.ItemTemplate>
<DataTemplate DataType="{x:Type local:MyViewModel}">
<!-- xaml is typed here directly -->
<Border>
...
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
И xaml внутри DataTemplate большой (более 200 строк).
Я хочу переместить xaml, который находится внутри DataTemplate, в отдельный UserControl, чтобы упростить его редактирование и обслуживание. делаю дальше:
<ListBox ItemsSource="{Binding Items}">
<ListBox.ItemTemplate>
<DataTemplate DataType="{x:Type local:MyViewModel}">
<!-- xaml is moved to separate UserControl -->
<local:MyViewModelUserControl />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Проблема, с которой я сталкиваюсь, заключается в том, что рендеринг/обработка второго кода (с UserControl) занимает примерно в 2 раза больше времени, чем 1-й код. Есть идеи, как с этим бороться?
ПРИМЕЧАНИЕ. Я перемещаю не ListBox, а xaml, который находится внутри DataTemplate. Причина не в том, чтобы повторно использовать этот код, а в том, чтобы минимизировать основной файл, в котором находится ListBox. Другое дело, что у меня есть несколько DataTemplates внутри ListBox (для нескольких ViewModels), и xaml действительно огромен. Вот почему я хочу переместить этот xaml (который находится внутри DataTemplate) в отдельный элемент управления.