WPF中的窗口显示事件?

34

我希望每次显示窗口时,都能应用淡入淡出的动画效果。如何在XAML中实现? 由于该窗口可能会隐藏然后再次显示,因此我无法使用Loaded事件。


看看这个问题,也许会有所帮助: https://dev59.com/-XNA5IYBdhLWcg3wrf43 - Seekeer
2个回答

58
你可以使用ContentRendered事件或像这样重写OnContentRendered虚拟方法:
    bool _shown;

    protected override void OnContentRendered(EventArgs e)
    {
        base.OnContentRendered(e);

        if (_shown)
            return;

        _shown = true;

        // Your code here.
    }

10
需要使用“_shown”变量吗?“rendered”可以被调用两次或更多次吗? - user6416335
是的,当您的表单显示两次或更多时。大多数情况下,当窗体是子窗体并且需要使用1个实例反复显示和关闭时。 - Gray Programmerz

7
你可以使用 WPF 窗口中的 IsVisibleChanged 事件;然后在事件方法中使用:
if((bool)e.IsVisible)
{
   // It became visible
}
else
{
  // It became hidden
}

这个可以通过打开一个新的窗口实例来实现,this.Show()表示显示窗口,this.hide()表示隐藏窗口,this.Close()表示关闭窗口。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接