2016-06-06 2 views
1

У меня есть простой список, который загружает элементы (в моем тестовом примере 135). Я зарегистрировал все идентификаторы загружаемых элементов, и все они имеют уникальный идентификатор. Элемент данных listbox - это usercontrol, поэтому в usercontrol я также зарегистрировал идентификаторы, чтобы увидеть, какие из них загружены.Listbox продолжает повторять первые позиции

Теперь он начинает ошибаться, он загружает только первые 10 предметов (я думаю, что изначально видно), а затем снова и снова повторяет эти первые предметы. Поэтому вместо 135 уникальных объектов у меня есть 135 объектов, которые являются одним из первых 10 или около того.

Вы можете увидеть регистрацию здесь (там намного больше ID не виден):

enter image description here

После линии управляющего пользователем идентификаторов, что это загружает только ID и сохраняет не зацикливание этих 10 идентификаторов до в списке есть 135 элементов.

Это полный код страницу

<Style x:Key="ListBoxItemStyle1" TargetType="ListBoxItem"> 
     <Setter Property="HorizontalContentAlignment" Value="Stretch"/> 

     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="ListBoxItem"> 
        <Border x:Name="LayoutRoot" BorderThickness="3"> 

         <ContentControl x:Name="ContentContainer" 
          VerticalContentAlignment="Top" 
          HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" 
          Margin="{TemplateBinding Padding}" 
          Content="{TemplateBinding Content}" 
          ContentTemplate="{TemplateBinding ContentTemplate}" 
          Foreground="{TemplateBinding Foreground}" /> 
        </Border> 

       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</Page.Resources> 

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"></RowDefinition> 
      <RowDefinition></RowDefinition> 
     </Grid.RowDefinitions> 
     <SearchBox x:Name="sbSearch" QuerySubmitted="sbSearch_QuerySubmitted" Margin="12,12,12,0"></SearchBox> 


     <ListBox x:Name="lbResults" Grid.Row="1" ItemContainerStyle="{StaticResource ListBoxItemStyle1}" Background="{x:Null}"> 
      <ListBox.ItemTemplate> 
       <DataTemplate> 
        <userControls:WantlistItem Tag="{Binding}"></userControls:WantlistItem> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 
     </ListBox> 
    </Grid> 
</Grid> 

Что я делаю неправильно?

Edit1: Загрузка ListBox на главной странице

private void Page_Loaded(object sender, RoutedEventArgs e) 
    { 
     if(Variables.WantsAll == null) Helpers.GetWantList(); 
     foreach (var v in Variables.WantsAll) 
     { 
      Debug.WriteLine(v.id); 
     } 
     Debug.WriteLine("--- USER CONTROL ID's ---"); 
     lbResults.ItemsSource = Variables.WantsAll; 


    } 

В UserControl Page_Loaded я их регистрации, а также.

На этом скриншоте вы видите, что я прокрутил вниз, и он снова начинает повторять одни и те же предметы (иногда это испортится, так как вы можете видеть, что первый элемент неправильно повторяется, он другой).

Обратите внимание, что перед именами я добавил идентификатор, который он распечатывает, вы можете видеть, что он повторяет одинаковые идентификаторы (например, зеленый альбом: 1301162), даже в списке, который я установил как ItemSource, он существует только один раз (все предметы уникальны).

Scroll down

+0

Как вы печатаете идентификаторы? В каком случае контроля? –

+0

Я отредактировал первое сообщение с регистрацией идентификаторов. Это происходит в Page_Loaded на главной странице и в пользовательском элементе управления (это те, которые вы видите после «--- ИДИТЕ КОНТРОЛЯ ПОЛЬЗОВАТЕЛЯ ---») – vixez

+1

Можете ли вы поделиться более подробной информацией о «Helpers.GetWantList»() "и" Variables.WantsAll "? какие они? Кроме того, вы можете попробовать простой тест, где вы привязываетесь, или назначить lbResults.ItemsSource для списка <> или IEnumerable <>. Список действительно использует виртуализацию, поэтому, если ваш объект WantsAll не реализует IEnumerable правильно, что произойдет. – AlexDrenea

ответ

0

Комментарий обеспечивается Jay Zuo - MSFT при условии, что решение, ответ this thread решить мою проблему точно.

Смежные вопросы