0

由于某种原因,我无法让处理程序触发点击功能。当我单击时,我会听到“bing”的声音,好像我做错了什么。这是一个 Windows 8 应用程序全屏。我觉得好像整个屏幕都无法点击鼠标。这是一个嵌套在 XAML 接口内的 MonoGame 项目。控制游戏“菜单”的代码如下:

<StackPanel Height="768" VerticalAlignment="Bottom">
        <ListView Name="InGameMenu" Width="300" HorizontalAlignment="Stretch" Background="Orange" Height="auto" Padding="30 0 0 0">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <Button FontSize="40" Content="{Binding}" Click="MenuElementSelected" IsEnabled="True"></Button>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ListView>
</StackPanel>

加载到列表中的元素只是字符串。关于可能发生的事情有什么想法吗?事件处理程序是

    private void MenuElementSelected(object sender, RoutedEventArgs e)
    {
        Button obj = sender as Button;

        switch ((string)obj.Content)
        {
            case "Resume":
                {
                    _game.resume();
                    break;
                }
            case "Restart":
                {
                    _game.restart();
                    break;
                }
        }
    }

但它甚至从未触发内部的断点。

任何帮助是极大的赞赏!

编辑:

整个东西坐落在一个 SwapChainBackgroundPanel 将 MonoGame 转置到界面上。我还不确定,但这可能是问题的一部分。

4

2 回答 2

0

在下面修改您的喜欢并在该行switch上插入一个断点。default:然后,观察content变量的值是多少:

switch ((string)obj.Content)
{
    case "Resume":
        {
            _game.resume();
            break;
        }
    case "Restart":
        {
            _game.restart();
            break;
        }
    default:
        {
            var content = (string)obj.Content;
            break;
        }
}
于 2012-12-21T17:12:57.770 回答
0

因此,当您编写大量代码时,您往往会忘记您已经完成了某些事情,最糟糕的是,有时您可能会错过明显的事情。提醒所有友好的程序员;当您尝试调试以前的问题时,请多加注意,以免它们溢出到他们可能创建的新问题中(未被注意到)。我有以下代码行:

Windows.UI.Core.CoreWindow.GetForCurrentThread().IsInputEnabled = false;

smack 在页面初始化的顶部,完全错过了它。希望这可以帮助其他犯了这个愚蠢错误的人。我们每天都会编写数千行代码,因此如果您在调试时不够小心,可能会发生这种情况。

于 2012-12-22T07:40:34.337 回答