由于某种原因,我无法让处理程序触发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转置到界面上。我不确定,但这可能是问题的一部分。
答案 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;
点击页面顶部的初始化并完全错过了它。希望这可以帮助那些犯这个愚蠢错误的人。我们每天都会编写数千行代码,所以如果你在调试时不够谨慎就会发生这样的事情。