问题
I've started a new project in Visual Studio and have been trying to use the static TouchPanel class to get input. I have enabled the 'Tap' gesture through the EnabledGestures property, however when I tap the screen the gesture does not register (i.e. TouchPanel.IsGestureAvailable returns false).
Other things such as Mouse.GetState().LeftButton == ButtonState.Pressed do not ever prove true even though in my previous project (which was based on a Microsoft sample project) it always worked without any problems.
Anyone have any ideas why I can't seem to be able to get any form of input from the device?
回答1:
Here is how I set it up - in the page constructor I set the gesture type:
// Constructor
public MainPage()
{
    InitializeComponent();
    TouchPanel.EnabledGestures = GestureType.Tap;
}
Then, in the XAML markup for the main grid I link it to a ManipulationCompleted event handler:
<Grid ManipulationCompleted="LayoutRoot_ManipulationCompleted" x:Name="LayoutRoot" Background="Transparent">
</Grid>
Then, in the same event handler:
private void LayoutRoot_ManipulationCompleted(object sender, ManipulationCompletedEventArgs e)
{
    if (TouchPanel.IsGestureAvailable)
    {
        if (TouchPanel.ReadGesture().GestureType == GestureType.Tap)
        {
            Debug.WriteLine("A");
        }
    }
}
Works for me in a Silverlight project. In XNA, you would have to add the gesture types also in the constructor:
public Game1()
{
    graphics = new GraphicsDeviceManager(this);
    TargetElapsedTime = TimeSpan.FromTicks(333333);
    TouchPanel.EnabledGestures = GestureType.Tap;
}
Then in the Update method you have the same verification:
protected override void Update(GameTime gameTime)
{
    // Allows the game to exit
    if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
        this.Exit();
    if (TouchPanel.IsGestureAvailable)
    {
        if (TouchPanel.ReadGesture().GestureType == GestureType.Tap)
        {
            Debug.WriteLine("A");
        }
    }
    // TODO: Add your update logic here
    base.Update(gameTime);
}
来源:https://stackoverflow.com/questions/4837747/cant-seem-to-get-touch-input-from-touchpanel-in-windows-phone-7