2012-04-26 61 views
0

嗨我寫在VS2010與C#中的Windows Phone應用程序爲WP 7.1的Windows Phone ContentPanel_ManipulationStarted不工作

我儘量讓上的ContentPanel(網格)的用戶水龍頭,然後展示一些東西或去另一個頁面。

但是,我發現它無法正常工作。

這是我在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> 

,並在CS

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由正文塊「點擊開始」,但不整個Grid區域。

我甚至嘗試將NavigationService.Navigate(new Uri("/secondpage.xaml", UriKind.Relative));中的ContentPanel_ManipulationStarted方法更改爲MessageBox.Show("Tap");,但仍然無法正常工作。

我知道我可以重寫OnManipulationStarted方法來實現。但我認爲應該由事件處理程序來完成,我是否犯了錯誤?

+0

抓住你的代碼,並在新的WP7.1項目在VS2010中嘗試它,它工作正常,我創建了「第二頁」在與mainpage相同的位置。 – 2012-05-14 20:46:59

回答

1

一個更好的辦法是使用另一個控制,以填補網格空間,並檢查點擊手勢(標記文本塊爲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> 
相關問題