3

XAMLをインターフェイスとして利用するMonoGameベースのゲームに取り組んでいます。ただし、スペースキーがXAMLインターフェイスをトリガーしないことを確認する際に問題が発生します(ゲーム内の他の目的で使用されます)。現在、アイテムを含むグリッドビューがあります。スペースを押すと、やりたくない要素が強調表示されます。実際にアイテムを選択しないようにしていますが、残念ながら、アイテムが強調表示されるのを防ぐことはできません(そして、矢印キーを使用してアイテムを切り替えることができます)。

これを行うコードを次に示します。

  <GridView HorizontalAlignment="Left" Name="Powers" Margin="10,10,0,0" VerticalAlignment="Top" Width="229" Height="163" SelectionMode="None">
        <GridView.GroupStyle>
            <GroupStyle>
                <GroupStyle.HeaderTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding}" Foreground="white" Width="50"></TextBlock>
                    </DataTemplate>
                </GroupStyle.HeaderTemplate>
            </GroupStyle>
        </GridView.GroupStyle>
        <GridView.ItemsPanel>
            <ItemsPanelTemplate>
                <VariableSizedWrapGrid MaximumRowsOrColumns="4" Orientation="Horizontal" ></VariableSizedWrapGrid>
            </ItemsPanelTemplate>
        </GridView.ItemsPanel>
    </GridView>

キーボードを介してアイテムがハイライトされるのを防ぐ方法はありますか?それをShiftキーに再配線できるようにしたいのですが、一度に1ステップずつです。

どんな助けでも大歓迎です!

編集:私はこれをいじくり回しました。私はそれが望むように働くための選択を得ました。ただし、問題は、スペースを押すと、選択したグリッドアイテムが強調表示されて「チェック」されるため、必要なものではないことです。つまり、紫色で選択されているかのようにハイライト表示されますが、スペースを押すと(ゲームのジャンプ用)、アイテムの周りに白いボックスが表示され、隅に「チェック」が表示されます。これは避けたい。私はこの質問をより高い点に向けて提起しています。これを解決する方法を本当に知りたいです。

4

1 に答える 1

2

ここでの秘訣は、実際にはUIelemenetを無効にすることです。バックエンド側のグリッドビュー。要素が選択されていることを確認してください(デフォルトをどこに設定しても問題ないと思います)。コンストラクターで、要素を無効にします。その結果、必要に応じてシフトできる有効な選択ができました。ただし、無効になっているため、入力に応答しません。MonoGame for Windows 8ゲームを使用している場合(何らかの理由でXNAをあきらめることにしたため)、これはXAMLを介したUI要素とのキーボード操作を防ぐための良い方法です。XNA側から入力を取得し、そのようにインターフェイスを操作することもできます。その結果、インターフェイスを無効にすると、予期しないXAML動作を発生させることなく、ゲームからUIを完全に制御できるようになります。ただし、タッチデバイスでこれを行う場合は、

于 2012-12-17T19:04:12.687 に答える