나는 면책 조항이 머리말을 기울여야합니다. 저는 초보 프로그래머입니다. 저는이 문제를 수 일간 혼자서 해결하려고 노력했지만 아이디어/블로그 게시물/연습 및 기타 소스가 완전히 없어졌습니다. 나는 정말로 당신의 시간을 읽고 잠재적으로 대답 해 주셔서 감사합니다.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"의 디버그 라인이 항상 기록되므로 이벤트가 실행되고 있음을 알 수 있습니다. 내가 테스트 지금까지했던 어떤
:
- 로깅 바인딩에 대한 모든 켜져 있고 아무것도 볼 수 없었다은 출력에 기록하기.
- 은 "로드 점수"디버그에서 선을 브레이크 포인트를 설정하고 그것을 올바르게 데이터 컨텍스트,
- 이 Dispatcher.BeginInvoke (LoadScores)를 사용하여 시도 정확히 일치하는 이름을 가진 올바른 필드 할당 조회가 그 때마다 볼 수 있습니다; UI 스레딩에서 UI 스레딩을 할 경우를 대비하여 문제
- stackpanel의 배경색을 다른 컨트롤에서 접히거나 숨길 수있는 색상으로 설정합니다. 또는 스토리 보드 애니메이션
- 동일한 목록 상자의 복사본을 만들었고 동일한 LoadScores() 메서드에서 listbox.datacontext = this를 설정 한 다음 로컬 변수 을 바인딩하도록 설정합니다. 이 동작이 동일한 것으로 나타났습니다. 두 번째로 datacontext를 설정하려고 시도했을 때 이 사라졌습니다.
- 세 개의 텍스트 필드를 수동으로 설정하여 목록 상자의 복사본을 만들고 모든 바인딩을 제거했습니다. 이것은 사라지지 않을 것이지만, 내가 레벨을 때릴 때마다 이 나타납니다.
- 한 레벨을 이기고 (작동하려면), 다른 것을 때려서 사라지게하고, gamepage.xaml/gamepage.xaml.cs에서 이동하십시오 게임 플레이가 일어나는 곳 (예 : mainpage.xaml에서 게임 페이지로 돌아 가기)이 문제는 해결되지 않으므로 문제는 gamepage.xaml/gamepage.xaml.cs 안에있는 것보다 더 높다고 가정합니다.
나는 어리석은/명백한 무언가를하고있는 것처럼 느껴진다.하지만 나는 초심자 프로그래머이다. 필자가 필요로하는 부분을 골라낸다. 그리고 이것은 데이터 세계에 대한 나의 첫 벤처이다. 바인딩. 나는 모든 제안을 크게 감사 할 것입니다.
미리 감사드립니다.