2010-08-20 85 views
0

我有以下问题需要解决:我的xaml中有一些省略号作为按钮工作,其中一些点击时可能会打开两个新按钮。我把它们放在不同的画布上,以这种方式生成的按钮已经以不透明度0存在。我想要的是在转换中单击父按钮时将该按钮的不透明度设置为1的效果。我怎样才能做到这一点?如何基于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; 
       } 
      } 
     } 

这就是我现在在做的方式,但我想这是行不通的。显示的按钮,但没有我之前告诉的效果。

回答

4

创建一个DoubleAnimation并从点击开始。事情是这样的:

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

然后在代码:

fadeIn.Begin();

- 编辑 -

下面介绍如何在C#中做一个动画。在XAML中定义它实际上更容易,但如果这真的是你想要的,这是一种方法。

 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

我可以在cs文件中创建它吗?按照你展示的方式,我将不得不创建一个按钮的故事板? – 2010-08-20 19:53:50

+0

您可以在CS文件中创建动画。从架构的角度来看,我不会这么做,但从技术上讲,它是有效的。我将编辑我的答案以显示。 – Robaticus 2010-08-20 20:27:33