2011-11-13 17 views
9

Attualmente sto seguendo lo Pluralsight C# Fundamentals: Part 1 e nella sezione Classes and Objects il video mi istruisce a creare una nuova Applicaiton di WPF in Visual Studio e inserire il codice. Ciò risulta nel seguito.MainWindow_Loaded non viene attivato sulla mia applicazione WPF

namespace WpfApplication1 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 
     } 

     void MainWindow_Loaded(object sender, RoutedEventArgs e) 
     { 
      Employee e1 = new Employee("Ash"); 

      Employee e2 = new Employee("Lee"); 

      Output.Text = e1.Name + "" + e2.Name; 
     } 
    } 
} 

dipendenti è fondamentalmente una classe fittizia che è stato definito con una singola istanza variabile Name per dimostrare il funzionamento costruttori.

C'è anche un Output chiamato Output che sto cercando di aggiornare sull'ultima riga del codice.

Inizialmente avevo il codice contenuto in MainWindow_Loaded nel costruttore MainWindow, il tutorial dice che questa è una cattiva pratica e dovrebbe apparire come il mio primo frammento di codice.

Tuttavia ciò interrompe il funzionamento dell'applicazione. La mia domanda è qual è il problema?

Il tutorial è obsoleto? Sto eseguendo la versione sbagliata? È stato cambiato in beta?

Grazie.

+0

Ti iscrivi all'evento 'Loaded' della finestra ...? –

risposta

25

Verificare che l'evento Loaded sia mappato a MainWindow_Loaded in XAML per MainWindow.

Edit: Spostare il mio commento qui sotto nella risposta, come sembra essere più utile:

aprono MainWindow.xaml (non MainWindow.xaml.cs), fare clic sulla finestra (assicuratevi di don' t avere uno dei controlli selezionati), aprire la finestra delle proprietà (credo che F4 lo farà), fare clic sulla scheda degli eventi nella finestra delle proprietà, trovare Loaded e assicurarsi che sia mappato a MainWindow_Loaded (se è vuoto si dovrebbe essere in grado di selezionare il vostro già esistente)

+0

Sono nuovo di C# e VS2010, potresti farmi da guida? – Ash

+5

apri MainWindow.xaml (non MainWindow.xaml.cs), fai clic sulla finestra (assicurati di non avere uno dei controlli selezionati), apri la finestra delle proprietà (credo che F4 lo farà), clicca sul scheda eventi nella finestra delle proprietà, trova Loaded e assicurati che sia mappato a MainWindow_Loaded (se è vuoto dovresti poter selezionare quello già esistente). – BlackICE

+0

Grazie per la risposta. Una volta che ho avuto le parole chiave sono stato in grado di trovare http://msdn.microsoft.com/en-us/library/ms366768(v=vs.80).aspx con alcuni google foo. Dal momento che ci sono diverse risposte corrette selezionerò la tua come soluzione dal momento che hai risposto per prima. – Ash

5

probabilmente stai manca subscribtion reale per Loaded evento, si può risolvere in due modi:

XAML:

<Window ... Loaded="MainWindow_Loaded"> 

codice dietro, ad esempio. nel costruttore:

public MainWindow() 
{ 
    InitializeComponent(); 
    Loaded += MainWindow_Loaded; 
} 
6

Se si vuole fare questo programatically è possibile utilizzare:

public MainWindow() 
{ 
    Loaded += MainWindow_Loaded 
    InitializeComponent(); 
} 
0

mi mancava Carica di = "Window_Loaded" nel mio MainWindow.xaml. Probabilmente lo vedrai sulla riga 8 nella xaml sotto la vista del designer. Sto anche usando il programma Pluralsight per molte cose diverse in WPF. Dispatcher e backgroundWorker sono entrambi essenziali per le app WPF pesanti, come quelle dei PLC. Le attività e i delegati basati sull'evento per l'interfaccia utente sono gli stessi per la finestra. Il carico è esattamente come l'evento on_click, ad eccezione degli incendi sul carico.

Problemi correlati