泥庭

2013年5月8日

タッチされたデバイスを取得する

Filed under: .NET, ストアアプリ, Windows8 — タグ: , — yone64 @ 10:01 PM

先日、Room metro #16で発表してきました。

せっかくなので、内容を紹介。前回と前々回は前ふりです。

WindowsStoreアプリでは、TappedイベントからPointerDeviceTypeプロパティーでイベントが発生したデバイスを取得することができます。取得可能なデバイスは次の3種類。

  • Mouse
  • Pen
  • Touch

なお、HoldingイベントはMouseでは発生しません。RightTappedイベントは、Holdingイベント後にエミュレートされます。またHoldingイベントからは、HoldingStateから下記状態が取得できます。

  • Started
  • Completed
  • Canceled

ホールドが始まるとStartedが入った状態でイベントが、終了するとCompletedが入った状態でイベントが発生します。ホールド中にタッチポイントが動くとCanceledが入った状態でイベントが発生します。

XAML側

<Page
    x:Class="DeviceType.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:DeviceType"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
        <Rectangle Fill="#FF1717C5"  Height="400" Stroke="Black" Width="400" Tapped="Rectangle_Tapped" 
                   Holding="Rectangle_Holding" RightTapped="Rectangle_RightTapped" DoubleTapped="Rectangle_DoubleTapped"/>
        <TextBox x:Name="textBox1" TextWrapping="Wrap" Width="200" HorizontalAlignment="Left" IsReadOnly="True"/>
    </Grid>
</Page>

コードビハインド側

private void Rectangle_Tapped(object sender, TappedRoutedEventArgs e)
{
    var message = e.PointerDeviceType + "で、TAP!";
    InsertString(message);
}

private void Rectangle_Holding(object sender, HoldingRoutedEventArgs e)
{
    var message = e.PointerDeviceType + "で、Hold " + e.HoldingState;
    InsertString(message);
}

private void Rectangle_RightTapped(object sender, RightTappedRoutedEventArgs e)
{
    var message = e.PointerDeviceType + "で、Right TAP!";
    textBox1.Text = message + Environment.NewLine + textBox1.Text;
}

private void Rectangle_DoubleTapped(object sender, DoubleTappedRoutedEventArgs e)
{
    var message = e.PointerDeviceType + "で、Double TAP!";
    InsertString(message);
}

private void InsertString(string message)
{
    textBox1.Text = message + Environment.NewLine + textBox1.Text;
}

コメントする »

まだコメントはありません。

RSS feed for comments on this post. TrackBack URI

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

WordPress.com Blog.

%d人のブロガーが「いいね」をつけました。