我使用默认模板启动了一个电话应用程序,该模板已经定义了视图模型。我修改了MainViewModel的LoadData()方法以异步调用odata服务。但它不适用于数据绑定。我已验证该呼叫成功返回,但没有显示任何结果。异步加载ViewModel中的数据(使用异步并等待)不与数据绑定一起使用
LongListSelector的项目源绑定到视图模型中的Items属性。
<phone:LongListSelector ItemsSource="{Binding Items}" x:Name="MainLongListSelector" Margin="0,0,-12,0" SelectionChanged="MainLongListSelector_SelectionChanged">
<phone:LongListSelector.ItemTemplate>
<DataTemplate>
<StackPanel Margin="0,0,0,17">
<TextBlock Text="{Binding UnReadCount}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/>
<TextBlock Text="{Binding description}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
</StackPanel>
</DataTemplate>
</phone:LongListSelector.ItemTemplate>
</phone:LongListSelector>
这里是我的修改视图模型(注意异步和等待使用):
public void LoadData()
{
FetchTileViewItems();
}
private async void FetchTileViewItems()
{
var ret = await I2ADataServiceHelper.GetTileViewItemsAsync();
this.Items = new ObservableCollection<TileViewItem>(ret);
this.IsDataLoaded = true;
}
我打电话的页面,就像之前在NavigatedTo事件LoadData()方法:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
if (!App.ViewModel.IsDataLoaded)
{
App.ViewModel.LoadData();
pr1.IsVisible = false;
}
}
点击运行,什么也没有显示出来......我错过了什么?任何指针都非常感谢。
什么'pr1'?不应该是'pr1.IsVisible = true;'? – svick 2013-03-08 23:59:36