2010-08-20 4 views
0

J'ai le problème suivant pour résoudre: J'ai quelques ellipses dans mon XAML qui fonctionnent comme des boutons, et certains d'entre eux peuvent ouvrir dans 2 nouveaux boutons lorsque vous cliquez dessus. Je les ai mises dans un canevas séparé, de manière à ce que les boutons à générer existent déjà avec l'opacité 0. Ce que je veux c'est avoir un effet pour mettre cette opacité à 1 quand je clique sur leur bouton parent, dans une transition. Comment puis-je y parvenir?Comment créer un bouton de changement basé sur une ellipse dans Silverlight?

C#

 private void ExpandHarborButtons(object sender, MouseButtonEventArgs e) 
     { 
      Ellipse thisPath = (Ellipse)sender; 
      String test = (String)thisPath.DataContext; 
      for(int i = 0; i < DoubleHarbors.Children.Count; i++) 
      { 

       Ellipse button = (Ellipse)VisualTreeHelper.GetChild(DoubleHarbors, i); 

       if (test.Contains((String)button.DataContext)) 
       { 
        button.Opacity = 1; 
       } 
      } 
     } 

C'est la façon dont je fais en ce moment, mais il ne fonctionne pas comme je veux. Les boutons sont montrés, mais pas avec l'effet que j'ai déjà dit.

Répondre

4

Créer une DoubleAnimation et commencer à partir du clic. Quelque chose comme ceci:

<Storyboard x:Name="fadeIn"> 
    <DoubleAnimation Storyboard.TargetName="ButtonName" From="0.0" To="0.1" Duration="0:0:0.5" 
       Soryboard.TargetProperty="Opacity"/> 
</Storyboard> 

Puis dans le code:

fadeIn.Begin();

--EDIT--

Voici comment faire une animation en C#. C'est en fait plus facile à définir en XAML, mais si c'est vraiment ce que vous voulez, c'est une façon de le faire. Est-ce que je peux créer ceci dans le fichier cs?

 Storyboard sb = new Storyboard(); 
     DoubleAnimation da = new DoubleAnimation(); 
     da.From = 0; 
     da.To = 1.0; 
     da.Duration = new Duration(new TimeSpan(0, 0, 0, 0, 500)); 

     sb.Children.Add(da); 

     Storyboard.SetTarget(sb, sender as Button); 
     Storyboard.SetTargetProperty(Button1, new PropertyPath("Opacity")); 

     sb.Begin(); 
+0

Dans la façon dont vous avez montré, je devrais créer un storyboard pour quel bouton? –

+0

Vous pouvez créer l'animation dans le fichier CS. Pas forcément comme je le ferais d'un point de vue architectural, mais techniquement, ça marche. Je vais éditer ma réponse pour montrer. – Robaticus

Questions connexes