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가 포함되어 있습니다.

레벨을 올린 후 내가 예상 한대로 점수를 내리고 목록 상자에 int를 표시합니다. 목록 상자가 비어 있지만 다음 단계의 동일한주기를 거치 자마자 "Scores Loaded"의 디버그 라인이 항상 기록되므로 이벤트가 실행되고 있음을 알 수 있습니다. 내가 테스트 지금까지했던 어떤

:

  1. 로깅 바인딩에 대한 모든 켜져 있고 아무것도 볼 수 없었다은 출력에 기록하기.
  2. 은 "로드 점수"디버그에서 선을 브레이크 포인트를 설정하고 그것을 올바르게 데이터 컨텍스트,
  3. 이 Dispatcher.BeginInvoke (LoadScores)를 사용하여 시도 정확히 일치하는 이름을 가진 올바른 필드 할당 조회가 그 때마다 볼 수 있습니다; UI 스레딩에서 UI 스레딩을 할 경우를 대비하여 문제
  4. stackpanel의 배경색을 다른 컨트롤에서 접히거나 숨길 수있는 색상으로 설정합니다. 또는 스토리 보드 애니메이션
  5. 동일한 목록 상자의 복사본을 만들었고 동일한 LoadScores() 메서드에서 listbox.datacontext = this를 설정 한 다음 로컬 변수 을 바인딩하도록 설정합니다. 이 동작이 동일한 것으로 나타났습니다. 두 번째로 datacontext를 설정하려고 시도했을 때 이 사라졌습니다.
  6. 세 개의 텍스트 필드를 수동으로 설정하여 목록 상자의 복사본을 만들고 모든 바인딩을 제거했습니다. 이것은 사라지지 않을 것이지만, 내가 레벨을 때릴 때마다 이 나타납니다.
  7. 한 레벨을 이기고 (작동하려면), 다른 것을 때려서 사라지게하고, gamepage.xaml/gamepage.xaml.cs에서 이동하십시오 게임 플레이가 일어나는 곳 (예 : mainpage.xaml에서 게임 페이지로 돌아 가기)이 문제는 해결되지 않으므로 문제는 gamepage.xaml/gamepage.xaml.cs
  8. 안에있는 것보다 더 높다고 가정합니다.

나는 어리석은/명백한 무언가를하고있는 것처럼 느껴진다.하지만 나는 초심자 프로그래머이다. 필자가 필요로하는 부분을 골라낸다. 그리고 이것은 데이터 세계에 대한 나의 첫 벤처이다. 바인딩. 나는 모든 제안을 크게 감사 할 것입니다.

미리 감사드립니다.

답변

0

문제점을 발견했습니다. 내가 GamePage.xaml.cs와 Gamepage.xaml을 떠나지 않는다고 말했을 때 틀 렸습니다.

나는 내 코드를 밝혀 내고 다음 레벨의 세부 정보를 나열한 전환 페이지로 실제로 뛰어 갔다가 다시 GamePage로 돌아왔다.

페이지를 떠날 때마다 이상한 일이 App._scoresController에 발생했습니다. 개인 _scoresController.Scores를 GamePage.xaml.cs 내에 만들고이를 응용 프로그램에 대신 사용하면 모든 것이 작동합니다. Scoreloop에서 이상하게 보입니다.

관련 문제