2010-11-25 4 views
1

en voyant ce billet de blog: http://mine.tuxfamily.org/?p=111, j'essaye de désactiver le mouvement de pivotement quand j'applique un contrôle à l'intérieur du pivot.Désactiver le flick pivot pour WP7

J'ai essayé la solution proposée avec IsHitTestVisible, mais il semble que l'application se verrouille en la définissant sur false.

Pour reproduire le problème, créez une application de base wp7. Utilisez cette XAML:

<Grid x:Name="LayoutRoot" Background="Transparent"> 
     <Grid x:Name="ContentPanel" Margin="12,0,12,0"> 
      <controls:Pivot Name="pivotCtrl" Grid.Row="1"> 
       <controls:Pivot.HeaderTemplate> 
        <DataTemplate> 
         <TextBlock Text="{Binding Value1}"/> 
        </DataTemplate> 
       </controls:Pivot.HeaderTemplate> 
       <controls:Pivot.ItemTemplate> 
        <DataTemplate> 
         <Grid> 
          <Grid.RowDefinitions> 
           <RowDefinition Height="40"/> 
           <RowDefinition Height="40"/> 
           <RowDefinition Height="*"/> 
          </Grid.RowDefinitions> 

          <TextBlock Grid.Row="0" Height="38" HorizontalAlignment="Left" VerticalAlignment="Top" Width="200" Text="{Binding Value1}" /> 
          <TextBlock Grid.Row="1" Height="38" HorizontalAlignment="Left" VerticalAlignment="Top" Width="200" Text="{Binding Value2}" /> 
          <Canvas Grid.Row="2" Width="400" Height="300" Background="Yellow" MouseLeftButtonUp="Canvas_MouseLeftButtonUp" MouseLeftButtonDown="Canvas_MouseLeftButtonDown" /> 
         </Grid> 
        </DataTemplate> 
       </controls:Pivot.ItemTemplate> 
      </controls:Pivot> 
     </Grid> 
    </Grid> 

avec ce code behing:

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

     List<Element> elements = new List<Element>(); 
     for (int i = 0 ; i < 10 ; i++) 
      elements.Add(new Element { Value1 = "Value - " + i, Value2 = "Something - " + i}); 

     pivotCtrl.ItemsSource = elements; 
    } 

    private void Canvas_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) 
    { 
     Debug.WriteLine("On"); 
     pivotCtrl.IsHitTestVisible = true; 
    } 

    private void Canvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
    { 
     Debug.WriteLine("Off"); 
     pivotCtrl.IsHitTestVisible = false; 
    } 
} 

public class Element 
{ 
    public string Value1 { get; set; } 
    public string Value2 { get; set; } 
} 

En mode débogage, je peux voir la valeur "Off", mais jamais "On" l'un.

Peut-être qu'il existe une autre solution pour cela.

Merci d'avance pour votre aide.

Répondre