2012-04-26 3 views
0

Привет Я пишу телефон приложение окна с C# в VS2010 для WP 7.1Windows Phone ContentPanel_ManipulationStarted Не работает

Я стараюсь, чтобы кран пользователя на ContentPanel (Grid), то что-то показать или перейти на другую страницу.

Однако, я обнаружил, что он работает неправильно.

Вот мой код в XAML

<phone:PhoneApplicationPage 
    x:Class="MyApp.MainPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" 
    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768" 
    FontFamily="{StaticResource PhoneFontFamilyNormal}" 
    FontSize="{StaticResource PhoneFontSizeNormal}" 
    Foreground="{StaticResource PhoneForegroundBrush}" 
    SupportedOrientations="Portrait" Orientation="Portrait" 
    shell:SystemTray.IsVisible="True"> 

    <!--LayoutRoot is the root grid where all page content is placed--> 
    <Grid x:Name="LayoutRoot" Background="Transparent"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="*"/> 
     </Grid.RowDefinitions> 

     <!--TitlePanel contains the name of the application and page title--> 
     <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28"> 
      <TextBlock x:Name="ApplicationTitle" Text="MY APPLICATION" Style="{StaticResource PhoneTextNormalStyle}"/> 
      <TextBlock x:Name="PageTitle" Text="page" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/> 
     </StackPanel> 

     <!--ContentPanel - place additional content here--> 
     <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0" ManipulationStarted="ContentPanel_ManipulationStarted"> 
      <TextBlock x:Name="lblTap" Text="Tap to Start" Height="30" HorizontalAlignment="Center" VerticalAlignment="Center"></TextBlock> 
     </Grid> 
    </Grid> 
</phone:PhoneApplicationPage> 

и в сСт

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Net; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Documents; 
using System.Windows.Input; 
using System.Windows.Media; 
using System.Windows.Media.Animation; 
using System.Windows.Shapes; 
using Microsoft.Phone.Controls; 

namespace MyApp 
{ 
    public partial class MainPage : PhoneApplicationPage 
    { 
     // Constructor 
     public MainPage() 
     { 
      InitializeComponent(); 
     } 

     private void ContentPanel_ManipulationStarted(object sender, ManipulationStartedEventArgs e) 
     { 
      NavigationService.Navigate(new Uri("/secondpage.xaml", UriKind.Relative)); 
     } 
    } 
} 

это не работает, я могу пойти только SecondPage по TextBlock «Нажмите Пуск», но не всей области сетки.

Я даже попытаюсь изменить NavigationService.Navigate(new Uri("/secondpage.xaml", UriKind.Relative)); в методе ContentPanel_ManipulationStarted на MessageBox.Show("Tap");, но все еще не работает.

Я знаю, что могу переопределить метод OnManipulationStarted для достижения. Но я думаю, что это должно быть сделано обработчиком событий, я делаю что-то неправильно?

+0

ухватил ваш код и попробовал его в VS2010 в новом проекте WP7.1, и он отлично работал для меня. Я создал «вторую страницу» в том же месте, что и главная страница. –

ответ

1

Лучший способ заключается в использовании другого элемента управления для заполнения сетки пространства и проверить Tap жеста (в честь TextBlock, как IsHitTestVisible = «ложь». Таким образом, вы получаете Нажмите в любом месте в пределах сетки страницы.

<Grid x:Name="ContentPanel" 
      Grid.Row="1" 
      Margin="12,0,12,0"> 
     <Rectangle Tap="ContentPanel_Tap" /> 

     <TextBlock x:Name="lblTap" 
        HorizontalAlignment="Center" 
        VerticalAlignment="Center" 
        IsHitTestVisible="False" 
        Text="Tap to Start" /> 
    </Grid> 
Смежные вопросы