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.Score 包含 User.Login、Rank 和 Result。

在我通关后,它会拉下分数并将它们显示在列表框中,就像我预期的那样。 一旦它经历了下一个级别的相同循环,尽管列表框是空白的。 "已加载分数"的调试行总是被记录下来,所以我知道事件正在触发。

到目前为止,我在测试中做了什么:

  1. 为绑定日志记录打开了 ALL,但看不到输出中记录的任何内容。
  2. 在调试"加载分数"行处设置一个断点,可以看到每次命中那里时,它都正确分配了数据上下文,使用名称完全匹配的正确字段
  3. 尝试使用Dispatcher.BeginInvoke(LoadScores(;以确保我在UI线程之外执行此操作,以防这是某种线程问题
  4. 将堆栈面板上的背景色设置为我可以用来确保它不会被另一个控件折叠或隐藏的颜色或情节提要动画
  5. 创建了同一列表框的副本,在相同的 LoadScores(( 方法中设置 listbox.datacontext = this,然后设置局部变量以便绑定到。 发现这表现出相同的行为,第二次去设置数据上下文时消失
  6. 创建了列表框的副本并删除了所有绑定,手动设置了三个文本字段。 这不会消失,但是每次通关都会出现
  7. 击败一个关卡(让它
  8. 工作(,击败另一个关卡(让它消失(,离开游戏发生的gamepage.xaml/gamepage.xaml.cs(如主页.xaml,然后回到游戏页面。 这并不能解决问题,所以我假设问题比gamepage.xaml/gamepage.xaml内部的问题更高.cs

我觉得我必须做一些痛苦的愚蠢/显而易见的事情,但我是一个新手程序员,只是在我需要的时候捡起碎片,这是我第一次进入数据绑定的世界。我将不胜感激任何建议。

提前感谢您的时间。

我发现了问题。 当我说我永远不会离开GamePage.xaml和Gamepage.xaml时.cs我错了。

修改了我的代码,发现我实际上是跳到一个过渡页面,其中列出了下一关的细节,然后回到GamePage。

每当我离开页面时,App._scoresController.Scores都会发生奇怪的事情。 如果我在 GamePage.xaml 中创建了一个私有_scoresController.Scores.cs并使用它而不是应用程序中的那个,那么一切正常。 Scoreloop看起来有些奇怪。

最新更新