У меня есть список театров, и я создал дополнительную плитку из своего приложения, чтобы перейти непосредственно к конкретному кинотеатру. Я передаю идентификатор театра в строке запроса:
Я загружаю кинотеатры из службы WCF в файл «MainViewModel.cs».
На моей домашней странице есть список кинотеатров, и я могу перейти на страницу сведений.
Но когда я хочу перейти с плитки, у меня возникает ошибка...
Плитка:
ShellTile.Create(new Uri("/TheaterDetails.xaml?selectedItem=" + theater.idTheater, UriKind.Relative), tile, false);
Страница моего кинотеатра:
public partial class TheaterDetails : PhoneApplicationPage
{
theater theater = new theater();
public TheaterDetails()
{
InitializeComponent();
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
if (!App.ViewModel.IsDataLoaded)
{
App.ViewModel.LoadData();
}
if (DataContext == null)
{
string selectedIndex = "";
if (NavigationContext.QueryString.TryGetValue("selectedItem", out selectedIndex))
{
int index = int.Parse(selectedIndex);
theater = (from t in App.ViewModel.Theaters
where t.idTheater == index
select t).SingleOrDefault();
DataContext = theater;
....
....
....
Ошибка :
https://dl.dropboxusercontent.com/u/9197067/error.png
Как если бы данные не были загружены...
У вас есть идея, откуда взялась проблема?
Решение может быть простым, но я новичок... Может быть, это потому, что я загружаю данные асинхронно, и приложение не ждет, пока это будет сделано...
Спасибо
РЕДАКТИРОВАТЬ :
Мой метод LoadData():
public void LoadData()
{
client.GetTheatersCompleted += new EventHandler<ServiceReference1.GetTheatersCompletedEventArgs>(client_GetTheatersCompleted);
client.GetTheatersAsync();
// Other get methods...
this.IsDataLoaded = true;
}
private void client_GetTheatersCompleted(object sender, ServiceReference1.GetTheatersCompletedEventArgs e)
{
Theaters = e.Result;
}