XAML单击事件处理程序不会触发

时间:2012-12-21 16:38:35

标签: c# xaml windows-8 monogame

由于某种原因,我无法让处理程序触发click函数。当我点击时,我得到了“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转置到界面上。我不确定,但这可能是问题的一部分。

2 个答案:

答案 0 :(得分: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;
        }
}

答案 1 :(得分:0)

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

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

点击页面顶部的初始化并完全错过了它。希望这可以帮助那些犯这个愚蠢错误的人。我们每天都会编写数千行代码,所以如果你在调试时不够谨慎就会发生这样的事情。