Существует ли form.onload в WPF?
Я хотел бы запустить некоторый код для загрузки формы в WPF. Можно ли сделать это? Я не могу найти, где писать код для формы onload.
Судя по ответам ниже, кажется, что я прошу не то, что обычно делается в WPF? В winforms Vb.Net это легко, вы просто переходите к событию onload и добавляете код, который вам нужен, запускается при загрузке. По какой-то причине, в С# WPF это кажется очень сложным или нет стандартного способа сделать это. Может кто-нибудь, пожалуйста, скажите мне, что это лучший способ сделать это?
Ответы
Ответ 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();
}
}
}
Надеюсь, это поможет тем, кто ищет.: -)