2016-02-18 4 views
1

Я только начал разрабатывать приложение на UWP. У меня проблема, что у меня есть ListView, который DataTemplate является UserControlUWP ListView элемент шаблона повторно использовать шаблон предыдущего элемента

<ListView ItemsSource="{Binding Data, Mode=OneWay}" SelectionMode="None" IsItemClickEnabled="False" 
         ItemContainerStyle="{StaticResource ListViewItemCustomStyle}">    
       <ListView.ItemTemplate> 
        <DataTemplate> 
         <items:FeedItem DataContext="{Binding}" Margin="0,0,0,8"/> 
        </DataTemplate> 
       </ListView.ItemTemplate> 
      </ListView> 

Затем я установил источник данных для ListView.

Эти предметы визуализированы хорошо, но после нескольких пунктов, они начинают использовать предыдущий шаблон элемента как-то. Я не мог понять. Кто-нибудь встретил эту проблему и знал, как ее исправить? Огромное спасибо.

+0

Что вы имеете в виду под «шаблоном предыдущих элементов»? – GeertvdC

+0

@GeertvdC Образец: В моем ListView есть много вещей? После прокрутки около 10 элементов, 11-й элемент имеет точно такой же шаблон, как и первый элемент, хотя содержимое (контекст данных) этого элемента совершенно иное. –

ответ

0

Элементы ListViews по умолчанию ItemsPanelTemplate имеет элемент ItemsStackPanel, который использует виртуализацию. Идея состоит в том, чтобы иметь только те элементы в памяти/rendered, которые отображаются прямо сейчас или легко достижимы путем прокрутки. Вы можете узнать больше на эту тему here.

Если вы действительно хотите прекратить использование каких-либо методов виртуализации, вам просто нужно определить свою собственную ItemsPanel. Например:

<ListView> 
    <ListView.ItemsPanel> 
     <ItemsPanelTemplate> 
      <StackPanel Orientation="Vertical"/> 
     </ItemsPanelTemplate> 
    </ListView.ItemsPanel> 
</ListView> 
Смежные вопросы