2010-09-13 6 views
0

J'ai un DataGrid dans mon application, qui possède une colonne avec CellTemplate défini avec un bloc de texte et un bouton.Storyboard pour un élément DataTemplate dans Silverlight

Je souhaite afficher le bouton uniquement lorsque vous passez la souris sur cette cellule spécifique. Comment puis-je atteindre cet objectif?

Merci d'avance.

Répondre

0

Il est peut-être possible pour créer un script storyboard basé sur un modèle qui fait référence à d'autres éléments templated, mais je serais trop peur d'essayer cette façon :)

Si vous créez le contenu de la cellule en tant que usercontrol (avec une zone de texte et bouton), les storyboards d'animation sont ensuite facilement créés pour ce contrôle et exécutés via des comportements ControlStoryboardAction attachés (je peux en ajouter un en quelques minutes si vous avez besoin d'un exemple). Les propriétés de contrôle pour la zone de texte etc. doivent exposer les valeurs et les changements (par exemple en les implémentant comme propriétés INotifyPropertyChanged ou même DependencyProperties), mais vous pouvez simplement lier le CellTemplate au contrôle enfant au lieu d'un TextBox.

Espérons que cela aide.

+0

Je pense que vous avez raison, je vais faire un contrôle avec storyboard approprié. – Walkor

0

Voici une solution qui utilise des déclencheurs.

<DataGrid> 
    <DataGrid.Items> 
     <System:String>hello</System:String> 
     <System:String>world</System:String> 
    </DataGrid.Items> 

    <DataGrid.Columns> 
     <DataGridTemplateColumn> 
      <DataGridTemplateColumn.CellTemplate> 
       <DataTemplate> 
        <Grid x:Name="MyGrid" Background="Transparent"> 
         <StackPanel> 
          <TextBlock Text="{Binding}"/> 
          <Button x:Name="MyButton" Visibility="Hidden" Content="{Binding}"/> 
         </StackPanel> 
        </Grid> 

        <DataTemplate.Triggers> 
         <Trigger Property="IsMouseOver" Value="True" SourceName="MyGrid"> 
          <Trigger.Setters> 
           <Setter TargetName="MyButton" Property="Visibility" Value="Visible"/> 
          </Trigger.Setters> 
         </Trigger> 
        </DataTemplate.Triggers> 
       </DataTemplate> 
      </DataGridTemplateColumn.CellTemplate> 
     </DataGridTemplateColumn> 
    </DataGrid.Columns> 
</DataGrid> 
+0

Les déclencheurs n'existent pas dans Silverlight. – Walkor

Questions connexes