Подтвердить что ты не робот

Существует ли form.onload в WPF?

Я хотел бы запустить некоторый код для загрузки формы в WPF. Можно ли сделать это? Я не могу найти, где писать код для формы onload.

Судя по ответам ниже, кажется, что я прошу не то, что обычно делается в WPF? В winforms Vb.Net это легко, вы просто переходите к событию onload и добавляете код, который вам нужен, запускается при загрузке. По какой-то причине, в С# WPF это кажется очень сложным или нет стандартного способа сделать это. Может кто-нибудь, пожалуйста, скажите мне, что это лучший способ сделать это?

4b9b3361

Ответ 1

Вы можете подписаться на событие Window Loaded и выполнить свою работу в обработчике событий:

public MyWindow()
{
  Loaded += MyWindow_Loaded;
}

private void MyWindow_Loaded(object sender, RoutedEventArgs e)
{
  // do work here
}

В качестве альтернативы, в зависимости от вашего сценария, вы можете выполнять свою работу в OnInitialized. См. Документы "Загруженные события" для обсуждения различий между ними.

Ответ 2

Используйте событие "Загружено" в окне. Вы можете настроить это в 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">

Вот как выглядело бы событие Window_Loaded:

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    // do stuff
}

Ответ 3

Loaded Событие возникает после сборки проекта. Чтобы сделать что-то раньше, вы можете ovveride OnStartup метод в App.xaml.cs.

public partial class App : Application
{
    protected override void OnStartup(StartupEventArgs e)
    {
        //...
        base.OnStartup(e);
    }
}  

Ответ 4

Этот вопрос задавали 4 года назад, но этот ответ может помочь другим, поэтому здесь идет → Чтобы сделать это просто и быстро - вниз и грязно, поместите код, который вы хотите запустить, в методе в коде. затем просто вызовите метод до MainWindow() InitializeComponent(). Это создает опасность, но чаще всего это работает, потому что компоненты загружаются перед началом/отображением окна. (Это рабочий код из одного из моих проектов.) Скажем, вы хотите играть в короткий файл, когда приложение запускается. Это будет выглядеть следующим образом:

using ...
using System.Windows.Media;

namespace yourNamespace_Name
{
    /// sumary >
    /// Interaction logic for MainWindow.xaml
    /// /sumary>
    public partial class MainWindow : System.Windows.Window
    {
        public MainWindow()
        {
            /*call your pre-written method w/ all the code you  wish to
             * run on project load. It is wise to set the method access
             * modifier to 'private' so as to minimize security risks.*/
            playTada();

            InitializeComponent();
        }

        private void playTada()
        {
            var player = new System.Media.SoundPlayer();
            player.Stream = Properties.Resources.tada;
            // add the waveFile to resources, the easiest way is to copy the file to
            // the desktop, resize the IDE window so the file is visible, right 
            // click the Project in the solution explorer & select properties, click
            // the resources tab, & drag and drop the wave file into the resources 
            // window. Then just reference it in the method.
            // for example: "player.Stream = Properties.Resources.tada;"         
            player.Play();
            //add garbage collection before initialization of main window
            GC.Collect();
            GC.WaitForPendingFinalizers();
        }
    }
}

Надеюсь, это поможет тем, кто ищет.: -)