如何检测WPF窗口的第一次显示

本文关键字:窗口 第一次 显示 WPF 何检测 检测 | 更新日期: 2023-09-27 18:10:06

我想知道哪是正确的方法来检测当一个WPF窗口已显示第一次?

如何检测WPF窗口的第一次显示

有一个叫做Loaded的事件,你可以用它来确定你的窗口何时准备好了。

从MSDN

当元素被布局、呈现并准备好进行交互时发生。

设置XAML

中的处理程序
<StackPanel
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="SDKSample.FELoaded"
Loaded="OnLoad"
Name="root">
</StackPanel>

添加隐藏代码

void OnLoad(object sender, RoutedEventArgs e)
{
    Button b1 = new Button();
    b1.Content = "New Button";
    root.Children.Add(b1);
    b1.Height = 25;
    b1.Width = 200;
    b1.HorizontalAlignment = HorizontalAlignment.Left;
}

Loaded可以多次调用

加载事件和初始化事件

根据我的测试和上面的链接,Loaded事件可以被触发多次。
所以,你需要在OnLoaded处理程序中设置一个标志。

例如,如果Stack Panel在TabItem控件中,则每次进入tab时都会调用loaded

我建议创建一个bool标志并检查它,并在构造函数中将其设置为true

bool FirstTime = true;
void OnLoad(object sender, RoutedEventArgs e)
{
     if (FirstTime)
     {
          FirstTime = false;
          //do your stuff first-time
     }
     else
     {
           //do your stuff for other
     }
}