0

なんらかの理由で、クリック機能をトリガーするハンドラーを取得できません。クリックすると、何か間違ったことをしているように「ビン」という音がします。これは 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

したがって、多くのコードを書くと、特定のことをしたことを忘れがちであり、最悪の場合、明らかなことを見逃してしまうことがあります。すべてのフレンドリーなプログラマーへのリマインダー。以前の問題をデバッグしようとするときは、作成した可能性のある(気付かれない)新しい問題に波及しないように、より注意を払ってください。次のコード行があります。

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

ページの初期化の上部を叩き、完全に見逃しました。これがこのばかげた間違いをした他の誰かに役立つことを願っています。毎日数千行のコードを記述しているため、デバッグに十分注意しないと、このようなことが発生する可能性があります。

于 2012-12-22T07:40:34.337 に答える
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 に答える