如何在Silverlight中基于椭圆创建更改按钮?

时间:2010-08-20 18:04:51

标签: c# silverlight silverlight-3.0

我有以下问题需要解决:我的xaml中有一些椭圆作为按钮,其中一些可能在点击时打开2个新按钮。我将它们放在单独的画布中,这样生成的按钮已经存在,不透明度为0.我想要的是在转换时单击其父按钮时将此按钮的不透明度设置为1。我怎样才能做到这一点?

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;
               }
            }
        }

这就是我现在正在做的事情,但它不能按我的意愿行事。按钮显示,但没有我之前告诉过的效果。

1 个答案:

答案 0 :(得分: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();