如何基于Silverlight中的椭圆创建更改按钮?
问题描述:
我有以下问题需要解决:我的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;
}
}
}
这就是我现在在做的方式,但我想这是行不通的。显示的按钮,但没有我之前告诉的效果。
答
创建一个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();
我可以在cs文件中创建它吗?按照你展示的方式,我将不得不创建一个按钮的故事板? – 2010-08-20 19:53:50
您可以在CS文件中创建动画。从架构的角度来看,我不会这么做,但从技术上讲,它是有效的。我将编辑我的答案以显示。 – Robaticus 2010-08-20 20:27:33