Я должен предисловие к этому с отказом от ответственности. Я новичок программист, я пробовал решить это самостоятельно, но у меня теперь полностью закончились идеи/сообщения в блогах/пошаговые руководства и другие источники. Я очень ценю ваше время в чтении и потенциальном ответе.Ошибка привязки данных 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» всегда регистрируется, поэтому я знаю, что событие стреляет.
Что я сделал до сих пор в тестировании:
- Включил ВСЕ для привязок лесосечных и ничего не мог видеть получать вход в выход.
- Установите точку останова в Debug «счеты Loaded» линию и можно увидеть, что каждый раз, когда он упадет там правильно назначен DataContext, с правильными полями с точно соответствующими именами
- попытался с помощью Dispatcher.BeginInvoke (LoadScores); чтобы быть уверенным, что я делал это из потока пользовательского интерфейса в случае, если это было каким-то образом резьба issue
- Установите цвет фона на панели стека на цвет, который я мог бы использовать, чтобы гарантировать, что он не был свернут или спрятан другим элементом управления или анимация раскадровки
- Создана копия того же списка, установите listbox.datacontext = this в том же методе LoadScores(), а затем настройте локальные переменные для привязки. Обнаружили, что это проявило то же поведение, исчезает во второй раз, когда я иду установить datacontext
- Создал копию списка и удалил все привязки, установив три текстовых поля вручную. Это не исчезло бы, но появлялся каждый раз, когда я бил уровень
- Ударьте на один уровень (заставляя его работать), избивайте другого (чтобы он исчез), перейдите от игровой страницы.xaml/gamepage.xaml.cs где происходит игровой процесс (например, на mainpage.xaml, а затем обратно на страницу игры. Это не устраняет проблему, поэтому я предполагаю, что проблема выше, чем что-то внутри gamepage.xaml/gamepage.xaml.cs
Мне кажется, что я должен делать что-то больно глупое/очевидное, но я начинающий программист, просто собираю куски, как мне нужно, и это мое первое предприятие в мире данных Буду признателен за любые предложения.
Заранее благодарим за ваше время.