int FadeOut;
for (FadeOut = 90; FadeOut >= 10; FadeOut += -10)
{
this.Opacity = FadeOut / 100;
this.refresh();
System.Threading.Thread.Sleep(50);
}
我做了这样的事但没有工作 // this.refresh();不工作
答案 0 :(得分:1)
我做了类似的事情,你可以继续工作。
不幸的是你必须实现自己的窗口标题栏:
<Window x:Class="WpfApplication2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
Name="myWindow" WindowStyle="None" AllowsTransparency="True"
>
<Window.Resources>
</Window.Resources>
<Grid>
<Button Margin="337,0,0,155">
<Button.Triggers>
<EventTrigger RoutedEvent="Button.Click">
<BeginStoryboard >
<Storyboard Duration="0:0:5">
<DoubleAnimation Storyboard.TargetName="myWindow" Storyboard.TargetProperty="Opacity" From="1" To="0"></DoubleAnimation>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Button.Triggers>
</Button>
</Grid>
</Window>
答案 1 :(得分:1)
Here's discussed同样的问题。
您还可以使用触发器:事件触发器或数据触发器来启动动画,动画的已完成事件可以在动画结束时设置回调。 这是数据触发器(您的数据上下文中应该有FadeOut属性)
<Window.Resources>
<Storyboard x:Key="FadeOut">
<DoubleAnimation From="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Duration="0:0:1.5"/>
</Storyboard>
</Window.Resources>
<Window.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=FadeOut}" Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard Storyboard="{StaticResource FadeOut}"/>
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>
</Window.Style>