2012-05-16 2 views
2

Я должен предисловие к этому с отказом от ответственности. Я новичок программист, я пробовал решить это самостоятельно, но у меня теперь полностью закончились идеи/сообщения в блогах/пошаговые руководства и другие источники. Я очень ценю ваше время в чтении и потенциальном ответе.Ошибка привязки данных Silverlight/XNA

Я пытаюсь интегрировать scoreloop в игру, которую я разрабатываю, но получаю очень странные результаты с привязкой данных и списком. Мои тесты (ниже) подразумевают, что должно быть что-то, что я делаю неправильно с привязками, но сумасшедшая вещь действительно работает в первый раз, когда я ее использую, но не для последующих уровней. Вот важный код, я использую:

XAML:

<ListBox x:Name="LeftListBox" Margin="12,48,0,128" ItemsSource="{Binding}" Background="{x:Null}" HorizontalAlignment="Left" Width="240"> 
      <ListBox.ItemTemplate> 
       <DataTemplate> 
        <StackPanel Margin="0,0,0,17"> 
         <StackPanel Margin="0,0,0,0" Orientation="Horizontal" HorizontalAlignment="Left"> 
          <TextBlock Text="{Binding Rank}" TextWrapping="NoWrap" /> 
          <TextBlock Text="." Width="54"/> 
          <TextBlock Text="{Binding Result}" TextWrapping="NoWrap" Width="76"/> 
          <TextBlock Text="{Binding User.Login}" TextWrapping="NoWrap"/> 
         </StackPanel>       
        </StackPanel> 
       </DataTemplate> 
      </ListBox.ItemTemplate>    
     </ListBox> 

меня есть событие, зарегистрированный в огонь, когда баллы будут загружены, это устанавливает связывание и записывает сообщение отладки:

LeftListBox.DataContext = App._scoresController.Scores; 
Debug.WriteLine("Scores Loaded"); 

App._scoresController.Scores содержит User.Login, Rank и Result.

После того, как я обыграл уровень, он набирает очки и отображает их в списке, как и ожидалось. Как только он пройдет один и тот же цикл для следующего уровня, хотя список не заполнен. Отладочная строка «Scores Loaded» всегда регистрируется, поэтому я знаю, что событие стреляет.

Что я сделал до сих пор в тестировании:

  1. Включил ВСЕ для привязок лесосечных и ничего не мог видеть получать вход в выход.
  2. Установите точку останова в Debug «счеты Loaded» линию и можно увидеть, что каждый раз, когда он упадет там правильно назначен DataContext, с правильными полями с точно соответствующими именами
  3. попытался с помощью Dispatcher.BeginInvoke (LoadScores); чтобы быть уверенным, что я делал это из потока пользовательского интерфейса в случае, если это было каким-то образом резьба issue
  4. Установите цвет фона на панели стека на цвет, который я мог бы использовать, чтобы гарантировать, что он не был свернут или спрятан другим элементом управления или анимация раскадровки
  5. Создана копия того же списка, установите listbox.datacontext = this в том же методе LoadScores(), а затем настройте локальные переменные для привязки. Обнаружили, что это проявило то же поведение, исчезает во второй раз, когда я иду установить datacontext
  6. Создал копию списка и удалил все привязки, установив три текстовых поля вручную. Это не исчезло бы, но появлялся каждый раз, когда я бил уровень
  7. Ударьте на один уровень (заставляя его работать), избивайте другого (чтобы он исчез), перейдите от игровой страницы.xaml/gamepage.xaml.cs где происходит игровой процесс (например, на mainpage.xaml, а затем обратно на страницу игры. Это не устраняет проблему, поэтому я предполагаю, что проблема выше, чем что-то внутри gamepage.xaml/gamepage.xaml.cs

Мне кажется, что я должен делать что-то больно глупое/очевидное, но я начинающий программист, просто собираю куски, как мне нужно, и это мое первое предприятие в мире данных Буду признателен за любые предложения.

Заранее благодарим за ваше время.

ответ

0

Я нашел проблему. Я ошибся, когда сказал, что никогда не покидаю GamePage.xaml.cs и Gamepage.xaml.

Я обнаружил свой код и обнаружил, что на самом деле я выпрыгнул на страницу перехода, в которой перечислены детали следующего уровня, а затем обратно в GamePage.

Всякий раз, когда я покидал страницу, с App._scoresController.Scores происходили странные вещи. Если я создал частный _scoresController.Scores в GamePage.xaml.cs и использовал это вместо того, что в приложении, тогда все работает. Это похоже на что-то странное со Scoreloop.

Смежные вопросы