Next to WPF introductory Tutorial series two--application Introduction, we continue to learn application
Iii. closure of WPF applications
The closure of a WPF application only stops when the application's Shutdown method is called. ShutDown is an implicit or explicit occurrence that can be set by specifying the Shutdownmode property value.
Shutdownmode Options |
|
Onlastwindowclose (default value): |
The application shuts down when the application shuts down, or when the last window closes, or when the shutdown () method of the Application object is called. |
Onmainwindowclose |
When the startup form closes or calls the Application object's shutdown () method, the application shuts down. (similar to the shutdown mode for C # Windows applications) |
Onexplicitshutdown |
The application is closed only when the shutdown () method of the Application object is called. |
- Changes to the Shutdownmode option can be changed directly in App.xaml, as in the following code.
<application x:class= "Wpfapp1.app" xmlns= "Http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x= "Http://schemas.microsoft.com/winfx/2006/xaml" Startupuri= "MainWindow.xaml" shutdownmode= "Onexplicitshutdown" > <Application.Resources> </ Application.resources></application>
2. Modify the Shutdownmode option in the code file (App.xaml.cs), but be aware that this setting is to be written before the App.run () method, as in the following code.
App. Shutdownmode = Shutdownmode.onexplicitshutdown; App. Run (Win);
Application other properties of the object:
Name |
Description |
Current |
Gets the application object for the current AppDomain. |
Dispatcher |
Gets the Dispatcher associated with this dispatcherobject. (inherited from Dispatcherobject.) ) |
MainWindow |
Gets or sets the main window of the application. |
Properties |
Gets the application-scoped collection of properties. |
resourceassembly |
Gets or sets a Assembly that provides a boxed Uniform Resource Identifier (URI) for a WPF application's resource. |
Resources |
Gets or sets the collection of application-scoped resources, such as styles and brushes. |
Shutdownmode |
Gets or sets the condition that causes the Shutdown method call to occur. |
StartupUri |
Gets or sets the UI that is automatically displayed when the application starts. |
Windows |
Gets the instantiation window in the application. |
Iv. adding Application Object events
Name |
Description |
Activated |
triggered when an application becomes a foreground application. |
Deactivated |
Triggered when the application is no longer a foreground application. |
Dispatcherunhandledexception |
Triggered if the exception was thrown by the application but not processed. |
Exit |
Triggered before the application is closed, and cannot be undone. |
FragmentNavigation |
Occurs when a browser in the application initiates navigation to the content fragment navigation, if the desired fragment is in the current directory, or after the source XAML catalog is loaded, if the desired fragment is in other content. |
LoadCompleted |
triggered when navigation to a directory loaded by a browser in the application is completed and rendered. |
Navigated |
triggered when navigating to content that has been found by the browser used in the application, it may not have finished loading yet. |
Navigating |
In a new navigation by the application, a browser request occurs. |
NavigationFailed |
The problem occurs when a browser of the application navigates to the requested content. |
Navigationprogress |
Periodically occurs in the application using browser management to provide navigation progress information for the download process. |
navigationstopped |
The Stoploading method that occurs in a browser is called in the application, or, if the new navigation is requested by the browser, the current navigation is in progress. |
Sessionending |
Occurs when the user logs off or shuts down the Windows session of the operating system. |
Startup |
Occurs when the Run method of the Application object is called. |
There are three ways to add events to your application.
The first way:
1, in the App.xaml to do the event binding, in the App.xaml.cs file to add the event processing method
In the App.xaml file, see the specific Add method.
2. After adding the event, the App.xml file code is as follows
<application x:class= "Wpfapp1.app" xmlns= "Http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x= "Http://schemas.microsoft.com/winfx/2006/xaml" Startupuri= "MainWindow.xaml" shutdownmode= "Onexplicitshutdown" activated= "application_activated" Exit= " Application_exit "> <Application.Resources> </Application.Resources></Application>
3. The code in the App.xaml.cs file is as follows:
Using system;using system.collections.generic;using system.configuration;using system.data;using System.Linq;using System.threading.tasks;using System.Windows; namespace wpfapp1{//<summary>// App.xaml Interactive logic///</summary> public partial class App:application { private void application_activated (object sender, EventArgs e) { } private void Application_exit (object sender, Exiteventargs e) { }}}
4. After adding an event using the above method, if you press F5 to execute the application in Visual Studio, the following error "does not contain a static ' Main ' method appropriate for the entry point" is reported. This error is due to Visual Studio's modification of the original automatically generated App.xaml related definitions in the project file (*.csproj). The specific differences are as follows:
1) The definition of App.xaml in the directly-created WPF project is as follows:
<applicationdefinition include= "App.xaml" > <Generator>MSBuild:Compile</Generator> <SubType>Designer</SubType> </ApplicationDefinition>
2) Visual Studio has the following configuration code for the modified App.xaml:
<page include= "App.xaml" > <SubType>Designer</SubType> <generator>msbuild: Compile</generator> </Page>
The first paragraph of the code APP.XAML in the project file is defined with the applicationdefinition tag. The second piece of code APP.XAML in the project file is defined by the page tag, which means that App.xaml is just a page.
Therefore, you only need to modify the App.xaml configuration from page to applicationdefinition in the project file.
The second way
1, as in the program class in WinForm write the main method, as in WPF, you can customize an app class to write main and other related events.
Using system;using system.collections.generic;using system.linq;using system.text;using System.Threading.Tasks; Using System.Windows; Namespace wpfapp1{ class app {[STAThread] static void Main () { //Define Application object as the entire application portal Application app = new application (); MainWindow win = new MainWindow (); App. Shutdownmode = Shutdownmode.onmainwindowclose; App. MainWindow = win; is required, otherwise the form win cannot be displayed . Show (); App. Run (); App. Activated + = app_activated; App. Exit + = App_exit; } static void App_activated (object sender, EventArgs e) { throw new NotImplementedException ();} static void App_exit (object sender, Exiteventargs e) { throw new NotImplementedException ();}} }
The Third Way
- In the App.xaml interface, such as Location 1, enter the Exit event name, Visual Studio 2013 will pop up a menu "new event handler", double click on this menu, Visual Studio 2013 will automatically create a "Application_ Exit "event, such as position 2.
V. WPF Application life cycle
The life cycle and execution order of WPF applications are illustrated with an image on MSDN. Shows the order of the principal events for the lifetime of the window.
WPF Introductory Tutorial Series three--application Introduction (cont.)