2011-11-13 19 views
9

Actualmente estoy siguiendo el Pluralsight C# Fundamentals: Part 1 y en la sección Classes and Objects el video me indica que cree una nueva aplicación WPF en Visual Studio y complete el código. Esto resulta en lo siguiente.MainWindow_Loaded no se activó en mi aplicación 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; 
     } 
    } 
} 

empleados es básicamente una clase simulado que ha sido definida con una sola instancia de variable Name el fin de demostrar cómo funcionan constructores.

También hay un TextBlock en mi MainWindow.xaml llamado Output que trato de actualizar en la última línea del código.

Inicialmente tenía el código contenido en MainWindow_Loaded en el constructor MainWindow, el tutorial dice que es una mala práctica y debería parecerse a mi primer fragmento de código.

Sin embargo, esto detiene el funcionamiento de la aplicación. Mi pregunta es ¿cuál es el problema?

¿Está el tutorial desactualizado? ¿Estoy ejecutando la versión incorrecta? ¿Fue cambiado en Beta?

Gracias.

+0

¿Se suscribe al evento 'Loaded' de Windows ...? –

Respuesta

25

Asegúrese de que el evento cargado asignado a MainWindow_Loaded en el XAML para MainWindow.

Editar: Moving mi comentario a continuación en la respuesta, ya que parece ser más útil:

abren MainWindow.xaml (no MainWindow.xaml.cs), haga clic en la ventana (asegúrese de que don' t tiene uno de los controles seleccionados), abra el cuadro de propiedades (creo que F4 lo hará), haga clic en la pestaña de eventos en el cuadro de propiedades, encuentre Loaded y asegúrese de que esté mapeado en MainWindow_Loaded (si está en blanco, debe estar capaz de seleccionar su ya existente)

+0

Soy nuevo en C# y VS2010, ¿podría explicarme cómo hacerlo? – Ash

+5

abra MainWindow.xaml (no MainWindow.xaml.cs), haga clic en la ventana (asegúrese de que no tiene uno de los controles seleccionados), abra el cuadro de propiedades (creo que F4 lo hará), haga clic en pestaña de eventos en el cuadro de propiedades, encuentre Loaded y asegúrese de que esté asignado a MainWindow_Loaded (si está en blanco, debe poder seleccionar el que ya tiene). – BlackICE

+0

Gracias por su respuesta. Una vez que tuve las palabras clave, pude encontrar http://msdn.microsoft.com/en-us/library/ms366768(v=vs.80).aspx con algunos google foo. Dado que hay varias respuestas correctas, seleccionaré la suya como solución ya que respondió primero. – Ash

5

probablemente te estás perdiendo subscribtion real para Loaded caso, se puede solucionar de dos maneras:

XAML:

<Window ... Loaded="MainWindow_Loaded"> 

Código atrás, por ejemplo. en el constructor:

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

Si quieres hacer esto mediante programación que puede utilizar:

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

me faltaba loaded = "Window_Loaded" en mi MainWindow.xaml. Probablemente lo verá en la línea 8 en la xaml debajo de la vista del diseñador. También estoy usando el programa Pluralsight para muchas cosas diferentes en WPF. El Dispatcher y el backgroundWorker son esenciales en las aplicaciones WPF cargadas pesadas, como con los PLC. Las tareas basadas en eventos y los delegados para la interfaz de usuario son las mismas para la ventana. Loaded es exactamente como el evento on_click, excepto los incendios en carga.

Cuestiones relacionadas