Windows phone 8 加载时长列表不会更新
我在让长列表选择器加载我的数据时遇到一些问题,我一直无法找到解决此问题的方法 这是我的xaml:Windows phone 8 加载时长列表不会更新,windows-phone-8,longlistselector,Windows Phone 8,Longlistselector,我在让长列表选择器加载我的数据时遇到一些问题,我一直无法找到解决此问题的方法 这是我的xaml: <phone:LongListSelector x:Name="animeList" Margin="0,0,-12,0" ItemsSource="{Binding Animes}" Tap="AnimeList_OnTap"> &
<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");
}
}
}
publicobservableCollection\u animes{get;set;}
公开收集动画
{
获取{return\u animes;}
设置
{
如果(值!=\u动画)
{
_动漫=价值;
NotifyPropertyChanged(“动画”);
}
}
}
以及如何加载数据:
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;
}
public主页()
{
初始化组件();
DataContext=App.ViewModel;
此.Loaded+=已加载;
}
已加载专用void(对象发送方,RoutedEventArgs RoutedEventArgs)
{
ObservableCollection _animes=新的ObservableCollection();
foreach(App.AnimeList.List中的变量i)
_添加(新的AnimeItemViewModel(){AId=i.AId,Name=i.Name});
App.ViewModel.Animes=\u Animes;
}
最后,只是为了显示列表中有数据
更新:我还有一个搜索功能,如果我输入搜索文本,长列表将更新,但由于某种原因我无法滚动
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;
}
}
private void OnKeyDown(对象发送方,System.Windows.Input.KeyEventArgs e)
{
如果(e.Key==Key.Enter)
{
ObservableCollection _animes=新的ObservableCollection();
foreach(App.AnimeList.List中的变量i)
if(string.IsNullOrWhiteSpace(SearchTextBox.Text)| | i.Name.ToLower()包含(SearchTextBox.Text.ToLower())
_添加(新的AnimeItemViewModel(){AId=i.AId,Name=i.Name});
App.ViewModel.Animes=\u Animes;
}
}
尝试将加载代码置于导航到的中。至于滚动问题-为堆叠面板设置适当的高度
。让我知道它是否有效 让我们尝试一下-将加载代码放在搜索功能(OnKeyDown
)上,看看加载是否正常,这样我就可以知道问题是代码还是它的位置。查看我的更新,当我这样做时,它会显示数据,但列表被卡住,我无法滚动。我已尝试在OnVavigatedTo中加载代码,同样的问题。您对滚动问题的看法是正确的,但是如何设置一个适用于所有设备的适当高度?我已经将我所有的xaml代码添加到了第一个帖子中。如果我使用auto,它是否会使框变高:(