ビュー モデルが既に定義されている既定のテンプレートを使用して電話アプリを開始しました。MainViewModel の LoadData() メソッドを変更して、odata サービスを非同期的に呼び出すようにしました。しかし、データバインディングでは機能していません。呼び出しが正常に返されたことを確認しましたが、結果が表示されません。
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>
ビューモデルへの私の変更は次のとおりです( async と await の使用に注意してください):
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;
}
}
ヒットランしても何も表示されません...何か足りないのですか?どんなポインタでも大歓迎です。