我的应用程序中有一个Listview,我需要绑定超过1000个项目。在获取数据时,我能够向用户显示一条消息,说明"提取项目...."。一旦获取数据完成"提取项目。"消息消失了,一段时间后我的数据显示在列表视图中。
基本上消息在数据绑定时间内消失。所以我的问题是,我怎样才能显示"取物品......"消息,直到我的listview完成所有项目的绑定?
任何人都可以建议我如何实现这一点。
提前感谢。
答案 0 :(得分:0)
您可以通过将ListView和TextBlock放入网格来实现此目的。并使用可见性在它们之间切换。使用任务获取项目,然后在任务完成时显示ListView。
的Xaml:
<Grid>
<TextBlock Text="yourText" Visibility="{Binding TextBlockVisibility}" HorizontalAlignment="Center"/>
<ListView ItemsSource="{Binding yourItems}" Visibility="{Binding ListViewVisibility}">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel></StackPanel>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
</Grid>
和您的ViewModel:
private Visibility _textBlockVisibility;
public Visibility TextBlockVisibility
{
get { return _textBlockVisibility; }
set
{
_textBlockVisibility = value;
RaisePropertyChanged();
}
}
private Visibility _listViewVisibility;
public Visibility ListViewVisibility
{
get { return _listViewVisibility; }
set
{
_listViewVisibility = value;
RaisePropertyChanged();
}
}
private async void StartFetchItems()
{
ShowTextBlock();
await Task.Factory.StartNew(FetchItemsAsync).ContinueWith(task2=>ShowListView());
}
private async Task FetchItemsAsync()
{
....fetchyourItems
}
private void ShowTextBlock()
{
TextBlockVisibility=Visibility.Visible;
ListViewVisibility=Visibility.Collapsed;
}
private void ShowListView()
{
ListViewVisibility=Visibility.Visible;
TextBlockVisibility=Visibility.Collapsed;
}