我有以下问题需要解决:我的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;
}
}
}
这就是我现在正在做的事情,但它不能按我的意愿行事。按钮显示,但没有我之前告诉过的效果。
答案 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();