2013-07-20 48 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

更新:我也有一個搜索功能,如果我進入一個會搜索文本longlist更新,但我出於某種原因無法滾動

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你可以嘗試「自動」,讓我知道它是否工作? –

相關問題