2
int FadeOut;
        for (FadeOut = 90; FadeOut >= 10; FadeOut += -10)
        {
            this.Opacity = FadeOut / 100;
            this.refresh();
            System.Threading.Thread.Sleep(50);
        }

我做了类似的事情但没有工作 // this.refresh(); 不管用

4

2 回答 2

1

这里讨论了同样的问题。

您也可以使用触发器:事件触发器或数据触发器来启动动画,以及动画的 Completed 事件来设置动画结束时的回调。这是数据触发器(您的数据上下文中应该有 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>
于 2012-10-09T07:53:51.487 回答
1

我做了这样的事情,你可以继续努力。
不幸的是,您必须实现自己的 Window 标题栏:

<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>
于 2012-10-09T07:50:17.433 回答