8

我想知道哪种是检测 WPF 窗口何时首次显示的正确方法?

4

3 回答 3

9

有一个名为的事件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;
}
于 2013-04-19T13:53:45.317 回答
2

Loaded 可以被多次调用。

Loaded 事件和 Initialized 事件

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

例如,如果 Stack Panel 在 TabItem 控件内,则每次进入选项卡时都会调用loaded。

于 2017-08-29T08:12:35.053 回答
-1

我建议制作一个 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
     }
}
于 2013-04-19T13:56:31.497 回答