2014-09-16 1 views
3

Je ListViewDésactiver ItemClick de ListView lorsque l'option de clic dans DataTemplate (WP 8.1)

<ListView x:Name="lstBWDetails" Grid.Row="2" Width="{Binding ActualWidth,ElementName=MainGrid}" 
    ItemTemplate="{StaticResource ItemFavoriteWord}" 
    ItemClick="lstBWDetails_ItemClick" IsItemClickEnabled="True" 
    Tapped="lstBWDetails_Tapped" >    
</ListView> 

Et le DataTemplate

<DataTemplate x:Key="ItemFavoriteWord"> 
    <Grid Width="400" Margin="10 0 5 2" Height="50" Background="#f0f0f1" > 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*"/> 
      <ColumnDefinition Width="100" /> 
     </Grid.ColumnDefinitions> 
     <StackPanel Margin="0 0 0 0" Orientation="Vertical" HorizontalAlignment="Left" Grid.Column="0" Tapped="StackPanel_Tapped"> 
      <TextBlock HorizontalAlignment="Left" VerticalAlignment="Center" Text="{Binding en}" Tag="{Binding en}" TextWrapping="Wrap" FontSize="18" Foreground="#c8454d" Margin="15 0 0 0" /> 
      <TextBlock HorizontalAlignment="Left" VerticalAlignment="Center" Text="{Binding local}" Tag="{Binding en}" TextWrapping="Wrap" FontSize="18" Foreground="#0577bb" Margin="15 0 0 0" /> 
     </StackPanel> 
     <StackPanel Margin="0 0 10 0" Orientation="Horizontal" HorizontalAlignment="Right" Grid.Column="1" > 
      <Image Height="40" Name="imgFav" Width="50" Margin="0 0 10 0" Tapped="imgFav_Tapped" Source="{Binding favo}" Tag="{Binding id}" /> 
     </StackPanel> 
     <Border Grid.ColumnSpan="2" Grid.Column="0" BorderBrush="#FFC9C9C9" BorderThickness="0,0,0,0.5" > 
     </Border> 
    </Grid> 
</DataTemplate> 

Quand je suis cliquez dans ListView article Cliquez -> OK Mais quand je suis cliqué dans imgFav_tapped -> L'élément ListView Clic être activé en premier, deuxième imgFav_Tapped être activé en second

Donc je veux désactiver l'élément ListView Cliquez quand je clique sur imgFav_Ta pped

Désolé mon mauvais anglais

+0

Avez-vous essayé des déclencheurs d'interaction? Ce message pourrait vous aider -> http://stackoverflow.com/questions/5545187/wpf-how-to-bind-a-command-to-the-listboxitem-using-mvvm – aggietech

Répondre

0

oui, été ici! Je crois que si vous définissez une liste pour activer le cliquage, vous obtiendrez TOUJOURS le clic dans son ensemble, lié au contexte de l'élément de liste, et il prendra TOUJOURS le pas sur tout ce que vous voulez faire avec les éléments dans le gabarit.

vous pouvez essayer de gérer l'événement clic à l'intérieur des contrôles individuels dans le modèle, mais cela est sans doute pas ce que vous voulez ...

la façon dont je résous ce qui est habituellement désactiver itemClick et gérer l'événement à la place taraudés, lancer n'importe quel objet via OriginalSource vers FrameworkElement, ce qui me permet d'extraire le datacontext et d'essayer de réagir de façon appropriée à l'élément cliqué.

quelque chose comme ça

private void List_Tapped(object sender, TappedRoutedEventArgs e) 
    { 
     var source = e.OriginalSource as FrameworkElement; 
     if (source == null) return; 

     var item = source.DataContext as MyItemClass; 
     if (item == null) return; 

     // do stuff with your item 
    } 

pas une solution tout à fait simple, mais j'espère que cela vous est utile à se rapprocher de ce que vous cherchez!

Questions connexes