2013-07-20 4 views
0

У меня возникли проблемы с настройкой длинного списка, загружающим мои данные, и я не смог найти решение этой проблемы.Longlist не будет обновляться при загрузке

Это моя XAML:

<phone:LongListSelector x:Name="animeList" 
         Margin="0,0,-12,0" 
         ItemsSource="{Binding Animes}" 
         Tap="AnimeList_OnTap"> 
    <phone:LongListSelector.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Margin="0,0,0,17"> 
       <TextBlock Text="{Binding Name}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"> 
        <toolkit:ContextMenuService.ContextMenu> 
         <toolkit:ContextMenu IsZoomEnabled="false"> 
          <toolkit:MenuItem Header="Add as favorit" Click="AddFavorite" /> 
         </toolkit:ContextMenu> 
        </toolkit:ContextMenuService.ContextMenu> 
       </TextBlock> 
      </StackPanel> 
     </DataTemplate> 
    </phone:LongListSelector.ItemTemplate> 
</phone:LongListSelector> 

мой взгляд модель проста:

public ObservableCollection<AnimeItemViewModel> _animes { get; set; } 
public ObservableCollection<AnimeItemViewModel> Animes 
{ 
    get { return _animes; } 
    set 
    { 
     if (value != _animes) 
     { 
      _animes = value; 
      NotifyPropertyChanged("Animes"); 
     } 
    } 
} 

И как я загрузить мои данные:

public MainPage() 
{ 
    InitializeComponent(); 

    DataContext = App.ViewModel; 
    this.Loaded += OnLoaded; 
} 

private void OnLoaded(object sender, RoutedEventArgs routedEventArgs) 
{ 
    ObservableCollection<AnimeItemViewModel> _animes = new ObservableCollection<AnimeItemViewModel>(); 
    foreach (var i in App.AnimeList.List) 
     _animes.Add(new AnimeItemViewModel() { AId = i.AId, Name = i.Name }); 
    App.ViewModel.Animes = _animes; 
} 

И, наконец, просто чтобы показать, что приведены данные в списке enter image description here

Update: У меня также есть функция поиска, и если я ввести искомый текст Будет ли обновление лонг, но я по какой-то причине не может прокручивать

private void OnKeyDown(object sender, System.Windows.Input.KeyEventArgs e) 
{ 
    if (e.Key == Key.Enter) 
    { 
     ObservableCollection<AnimeItemViewModel> _animes = new ObservableCollection<AnimeItemViewModel>(); 
     foreach (var i in App.AnimeList.List) 
      if (string.IsNullOrWhiteSpace(SearchTextBox.Text) || i.Name.ToLower().Contains(SearchTextBox.Text.ToLower())) 
       _animes.Add(new AnimeItemViewModel() { AId = i.AId, Name = i.Name }); 
     App.ViewModel.Animes = _animes; 
    } 
} 
+0

Давайте попробуем что-нибудь - возьмите свой код загрузки и поместите его в функцию поиска ('OnKeyDown'), чтобы проверить, не загружается ли она, поэтому я могу узнать, является ли проблема кодом или его положением. –

+0

Посмотрите мое обновление, когда я это сделаю, он дозирует отображение данных, но список застрял, я не могу его прокрутить. – Androme

ответ

1

Попробуйте разместить свой код загрузки в OnNavigatedTo. Что касается проблемы прокрутки - установка правильной высоты на StackPanel. Дайте мне знать, если это сработает.

+0

Я попытался загрузить мой код в OnVavigatedTo, та же проблема. Вы правильно относитесь к проблеме прокрутки, но как я могу установить правильную высоту, которая будет работать на всех устройствах? Я добавил весь свой код xaml в первое сообщение – Androme

+0

По какой-то причине загрузка сейчас работает. – Androme

+0

@DoomStone Можете ли вы попробовать «авто» и сообщить мне, если он работает? –

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