2014-05-07 2 views
0

Je suit DataTemplate pour une utilisation dans mon phone.LongListSelector à mon avis XAML:DataTemplate complet cliquable?

<DataTemplate x:Name="myLocationsListTemplate"> 
     <StackPanel Margin="0,0,0,15"> 
      <Grid VerticalAlignment="Top" Margin="0,0,5,0"> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="*" /> 
        <ColumnDefinition Width="120" /> 
       </Grid.ColumnDefinitions> 
       <TextBlock Grid.Column="0" TextTrimming="WordEllipsis" Text="{Binding Name}" TextWrapping="NoWrap" Style="{StaticResource PhoneTextLargeStyle}" VerticalAlignment="Top" Margin="0,0,0,22" /> 
       <Image Grid.Column="0" Width="138" Height="25" Source="/mAppData/stars-3.png" HorizontalAlignment="Left" VerticalAlignment="Bottom" Margin="0"/> 
       <TextBlock Grid.Column="1" Text="{Binding DistanceInMeterFormatted, FallbackValue=fallback, TargetNullValue=nullvalue, Mode=OneWay}" TextWrapping="NoWrap" Style="{StaticResource PhoneTextSubtleStyle}" HorizontalAlignment="Right" Margin="0,0,-3,20" VerticalAlignment="Bottom"/> 
       <TextBlock Grid.Column="1" Text="vor 10 min." TextWrapping="NoWrap" Margin="0" Style="{StaticResource PhoneTextSubtleStyle}" HorizontalAlignment="Right" VerticalAlignment="Bottom"/> 
      </Grid> 
      <Grid VerticalAlignment="Top" Margin="0,10,0,0"> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="*" /> 
        <ColumnDefinition Width="*" /> 
        <ColumnDefinition Width="*" /> 
        <ColumnDefinition Width="*" /> 
       </Grid.ColumnDefinitions> 
       <Image Grid.Column="0" Width="100" Height="100" Source="{Binding PreviewImg1}"/> 
       <Image Grid.Column="1" Width="100" Height="100" Source="{Binding PreviewImg2}"/> 
       <Image Grid.Column="2" Width="100" Height="100" Source="{Binding PreviewImg3}"/> 
       <Image Grid.Column="3" Width="100" Height="100" Source="{Binding PreviewImg4}"/> 
      </Grid> 
     </StackPanel> 
    </DataTemplate> 

Maintenant, je veux que le contenu complet DataTemplate fait « cliquable ». Moyens: Si l'utilisateur clique sur un TextBlock ou l'une des quatre images ou sur tout ce qui est affiché dans la liste, une action doit être effectuée avec une propriété de databound (en disant que le Name doit être indiqué).

Des idées pour que cela fonctionne? Pourquoi ne collez-vous pas simplement votre modèle entier dans un bouton?

+0

Utilisez l'événement selectedIndexchanged au lieu de tout événement de clic sur longlistselector. – Jaihind

Répondre

1

Vous pouvez styler le bouton si nécessaire pour supprimer toute apparence par défaut que vous n'aimez pas. par exemple.

<Style x:Key="BlankButtonStyle" TargetType="ButtonBase"> 

    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="ButtonBase"> 
       <ContentPresenter /> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 

    <Setter Property="Background" Value="Transparent" /> 
</Style> 
+0

On dirait une très bonne idée. J'ai maintenant joint le 'StackPanel' avec un'

+0

La ressource de style peut aller n'importe où dans votre chaîne de ressources (chaque élément a une collection .Resources). Un style comme celui-ci peut être utile dans toute l'application, donc personnellement, je le collerais dans app.xaml. Les boutons ont une propriété Command qui peut être liée à une commande du viewmodel. J'utiliserais ceci à la place d'un événement click sinon il ne sert à rien d'utiliser un bouton, n'importe quel élément peut déclencher un clic click – GazTheDestroyer

+0

en plaçant votre extrait tel qu'il est sur ma page dans '' l'éditeur dit le '