(2) WPF - Aplicación

1. El proceso de ejecutar el programa:

  • (1) Se construye el objeto Aplicación.
  • (2) Se llama al método Run.
  • (3) Se activa el evento Application.Startup
  • (4) El código de usuario construye uno o más objetos de ventana.
  • (5) Se llama al método Application.Shutdow.
  • (6) Se activa el evento Application.Exit.
  • (7) El método Run completa la ejecución.

Hay dos formas de inicializar una aplicación :

Por lo general, es mejor inicializar la aplicación desde el constructor del objeto de la aplicación, o controlar el evento de inicio, porque la aplicación realiza su inicialización interna aquí (por ejemplo, Application.Current no está configurado en el constructor).

2. Manejo de errores

Para problemas anormales irrecuperables

StackOverflowException : la mayor parte del desbordamiento de la pila se debe a que el código ingresa en un bucle infinito.

OutofMemoryException : cuando el sistema se ejecuta con poca memoria, hay tan pocos recursos disponibles que CLR no puede asignar un byte adicional. En tal caso, no se puede compilar código justo a tiempo, no se pueden encasillar variables y no se pueden asignar objetos.

ThreadAbortException : el subproceso solo terminará cuando el código de la aplicación llame a Thread.Abort, por lo que si no llama a Thread.Abort, ni siquiera verá una ThreadAbortException.

DispartcherUnhandledException
maneja las excepciones que surgen en la aplicación cuando no se puede usar ningún código para manejar la excepción;

<!--MyApp.xaml-->  
<Application ... DispatcherUnhandledException='Failure' />  
        //MyApp.xaml.cs  
        void Failure(object sender,DispatcheUnhandledExceptionEventArgs e){  
    // your custom logic  
}  
public class DispatcheUnhandledExceptionEventArgs  
        :DispatcherEventArgs{  
 public Wxception Excetion {get;}  
 public bool Handled {get;set;};  
}

tres, ventana

Las principales fases del ciclo de vida de la ventana:

  • (1) Se activa el evento Window.Initalized;
  • (2) Se activa el evento Window.Active;
  • (3) Se activa el evento Window.Loaded;
  • (4) Se activa el evento Window.ContentRendered;
  • (5) Se desencadena el evento Window.CotentRendered;
  • (6) El usuario interactúa con la ventana;
  • (7) Se activa el evento Window.Closing;
  • (8) Se activa el evento Window.Unloaded;
  • (9) Se activa el evento Window.Closed;

4. Navegación y páginas

Tres conceptos: host de navegación, contenido de navegación, log (responsable de rastrear las acciones de navegación de la aplicación)

Por favor agregue una descripción de la imagen

Host de navegación : NavigationWindow es el host de navegación predeterminado en WPF. NavigationWindow hereda de Window y agrega una interfaz de usuario de navegación predeterminada (botón Atrás, etc.). Y algunas funciones básicas necesarias para implementar la navegación. NavigationWindow tiene acceso a todas las funciones de nivel de aplicación como Window. Usando NavigationWindow, se puede realizar el modelo de ventana de navegación SDI. Puede alojar contenido de navegación;
contenido de navegación : como objetos de datos, tipos básicos como cadenas o páginas.

public class NavExample: NavigationWindow{  
 public NavExample(){  
     Mavigate(new Page1());//导航内容  
 }     
}

public class Page1:Page{  
public Page1(){  
        TextBlock block = new TextBlock();  
        Hyperlink link = new Hyperlink();  
        link.Click += LinkClicked;  
        link.Inlines.Add("Click for page 2");  
        block.Inlines.Add(link);  
        Content = block;  
        WindowTitle = "Page 1";  
    }  
    void LinkClicked(object sender,RoutedEventArgs e){  
        NavigationService.Navigate(new Page2());  
    }  
}

El objeto NavigationService proporciona acceso a operaciones de navegación independientes del host. NavigationService manejará las operaciones de navegación con normalidad, independientemente de si la página está alojada en un navegador o en NavigationWindow;

log: realizar un seguimiento de todo.

Comentarios:
Historial: una lista fija de sitios visitados, una lista de marcadores automática basada en el tiempo;
Diario: una lista de sitios visitados en la sesión actual.

Use xaml para implementar la navegación :

<!--page1.xaml-->
<page WindowTitle ='Page 1'>
<TextBlock>
<Hyperlink NavigateUri='page2.xaml'>
Click for page 2
</Hyperlink>
</TextBlock>
</page>

<!--page2.xaml-->
<Page WindowTitle='Page 2'>
</page>

<!--navexample.xaml-->

<NavigationWindow x:Class='EssentialWPF.NavExample' Source='page1.xaml'>

</NavigationWindow>

La propiedad Source de NavigationWindow se puede establecer en el nombre URI de la primera página (Page1.xaml), de modo que

página de inicio

<!--app.xaml-->
<Application x:Class='EssentialWPF.App' StartupUri='page1.xaml'>
</Application>

Pasar estado entre páginas

En HTML, los datos se transmiten guardando el estado en el servidor o utilizando la Cookie del cliente para completar la transferencia de datos. Una manera fácil de pasar datos en WPF es usar el diccionario de propiedades de la aplicación.

Supongo que te gusta

Origin blog.csdn.net/chen1083376511/article/details/131353669
Recomendado
Clasificación