1

次のようにセマンティックズームを使用するWindows8メトロアプリケーションを開発しています。

  • ズームインされたビューには、ListView(TextBoxおよびButtonコントロールを使用して)ユーザーの操作を可能にする複雑なコントロールが含まれているため、このListViewにはがありIsItemClickEnabled="False"ます。ユーザーは、ズームアウトされたビューを手動でトリガーする必要があります。

  • ListViewズームアウトされたビューには、ズームインされたビューのコントロールのステータス情報を表示する簡単なリストを表示する別のビューが含まれています。このListViewのItemsSourceプロパティには、ビューがアクティブになった瞬間に作成されるプレーンオブジェクトが動的に入力されます。このListViewにはIsItemClickEnabled="True"

私が欲しいものは:

ユーザーがズームアウトされたビューでアイテムをタップまたはクリックすると、ズームインされたビューがアクティブになり、クリックされたアイテムに一致するコントロールが表示されます(ズームインされたListViewではスクロールできるため、コントロールを非表示にすることができます)。SelectionChangedアイテムがクリックされたときにイベントがトリガーされる限り、これを行う方法を知っています。

代わりに何が起こりますか:

ユーザーがズームアウトビューのアイテムをタップまたはクリックすると、ズームインビューが自動的にアクティブになり、SelectionChangedイベントはトリガーされません。ただし、代わりに右クリックまたはCtrl+クリックを使用すると正常に機能します。

だから、私の質問は:

SelectionChanged右クリックとCtrl+クリックに加えて、アイテムのタップまたは左クリックでListViewがイベントをトリガーするようにする方法はありますか?そうでない場合、タップまたは左クリックを検出するにはどうすればよいですか?

どうもありがとうございます!

4

2 に答える 2

5

私は解決策を見つけました。リスト自体のイベントではなく、リストにTapped定義されているコントロールのイベントを制御する必要があります。DataTemplateListView

<SemanticZoom...>
    <SemanticZoom.ZoomedOutView>
        <ListView ...>
            <ListView.ItemTemplate>
                <DataTemplate>
                    <Border ... Tapped="Item_Tapped">

そして、このItem_Tappedメソッドでは、キャストsenderFrameworkElementてそのを確認しますDataContext

于 2012-07-19T09:14:05.187 に答える
1

Windows 8にはこれ以上クリックイベントはありませんが、代わりにジェスチャ(つまり、タップ、右タップ、保持)とポインタ(つまり、押された、解放された、移動された)があります。これから始めて、使用する入力デバイス(マウス、ペン、タッチなど)に応じて、さまざまなケースをスイッチで処理できます。

ここに例として小さなコードがあります。

void MyElement_Holding(object sender, Windows.UI.Input.HoldingEventArgs e)
{
    switch (e.PointerDeviceType)
    {
        case PointerDeviceType.Mouse:
            break;
        case PointerDeviceType.Pen:
            break;
        case PointerDeviceType.Touch:
            break;
    }
}

この助けを願っています。

于 2012-06-27T12:08:37.547 に答える