在WPF中是否存在form.onload?

l--*_*''' 49 c# wpf

我想在WPF中运行一些表单的代码.是否有可能做到这一点?我无法找到为表单onload编写代码的位置.

从下面的回答来看,似乎我所要求的并不是通常在WPF中完成的事情?在Vb.Net winforms中很简单,你只需要转到onload事件并添加你需要在加载时运行的代码.无论出于何种原因,在C#WPF中看起来很困难,或者没有标准的方法来做到这一点.有人可以告诉我这是最好的方法吗?

ito*_*son 92

您可以订阅Window的Loaded事件并在事件处理程序中完成您的工作:

public MyWindow()
{
  Loaded += MyWindow_Loaded;
}

private void MyWindow_Loaded(object sender, RoutedEventArgs e)
{
  // do work here
}
Run Code Online (Sandbox Code Playgroud)

或者,根据您的方案,您可以在OnInitialized中进行工作.有关两者之间差异的讨论,请参阅已加载事件文档.

  • 因为这对我来说在逻辑上是代码的一部分 - 行为 - 而不是视图(这是缺少虚拟OnLoaded方法的一种解决方法).例如,如果我必须将XAML提供给图形设计器以便在Blend中进行编辑,我希望它们不能修改Loaded事件处理.虽然这是一个边际电话! (17认同)

Tay*_*ese 28

使用Window的Loaded事件.你可以在XAML中配置它,如下所示:

<Window x:Class="WpfTest.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Your App" Loaded="Window_Loaded">
Run Code Online (Sandbox Code Playgroud)

这是Window_Loaded事件的样子:

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    // do stuff
}
Run Code Online (Sandbox Code Playgroud)