如何在WPF C#中关闭按钮上的FadeOut窗体窗体

时间:2012-10-09 07:20:11

标签: wpf wpf-controls storyboard fadeout

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

我做了这样的事但没有工作 // this.refresh();不工作

2 个答案:

答案 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>