这篇文章主要介绍了通过App.xaml理解wpf中的Application类,帮助大家更好的理解和学习使用c# wpf,感兴趣的朋友可以了解下
这个章节来了解Application类,我考虑了一晚上决定跳过控件类相关的学习,因为控件如果只是入门的话每个控件F12跳过去看一下属性、事件就能大致了解的差不多,而且控件比较多,每个都这样看一遍,感觉意义不大。同时控件的使用一般又同时包含了,资源、样式、触发器、模板、绑定、列表控件的话,可能还包含列表虚拟化和数据虚拟化。所以想了一下。打算先讲Application类。
教程的第一篇我们从hello world开始了解什么是程序。它是如何编译、生成和运行的。现在这一个篇从App.xaml讲解Application类中能包含哪些东西,。这个Application类有哪些应用场景。
App.xaml 里包含什么
我们新创建一个WPF的程序,默认什么代码也不改动的情况下双击程序代码中的App.xaml。我们看到如下代码:
<Application x:Class="ApplicationLifeCycle.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:ApplicationLifeCycle"
StartupUri="MainWindow.xaml">
<Application.Resources>
</Application.Resources>
</Application>
using System.Text;
using System.Windows;
namespace ApplicationLifeCycle
{
/// <summary>
/// App.xaml 的交互逻辑
/// </summary>
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
StringBuilder sb = new StringBuilder();
foreach (var item in e.Args)
{
sb.Append(item);
}
MessageBox.Show($"args length as {e.Args.Length},args content as {sb.ToString()}");
}
}
}
private bool _unsavedData = false;
public bool UnsavedData
{
get { return _unsavedData; }
set
{
_unsavedData = value;
}
}
protected override void OnSessionEnding(SessionEndingCancelEventArgs e)
{
base.OnSessionEnding(e);
//假设某些线程未完成保存,把UnsaveData设置为True
UnsavedData = true;
if (UnsavedData)
{
e.Cancel = true;
MessageBox.Show($"我们的数据尚未保存完毕,{e.ReasonSessionEnding} 将丢失数据。");
}
}
3)默认启动那个Window窗体。我们使用StartupUri设置可以修改默认启动的Window窗体。
private void GetCurrentWindowListButton_Click(object sender, RoutedEventArgs e)
{
Window mainWindow = Application.Current.MainWindow;
foreach (var item in Application.Current.Windows)
{
var title = ((Window)item).Title;
}
}
我们使用代码获取当前打开的所有window的标题。
Application的属性和方法目前就写这么多,其他的大家可以自己F12看一下并尝试写一下代码,资源和资源的查找虽然也是Application下的。但是我觉得这点要要出来单独讲,所以就不写在这里啦。
以上就是通过App.xaml理解wpf中的Application类的详细内容,更多关于理解wpf中的Application类的资料请关注得得之家其它相关文章!
本文标题为:通过App.xaml理解wpf中的Application类
![](/xwassets/images/pre.png)
![](/xwassets/images/next.png)
- 如何使用C# 捕获进程输出 2023-03-10
- c# 模拟线性回归的示例 2023-03-14
- Unity Shader实现模糊效果 2023-04-27
- .NET CORE DI 依赖注入 2023-09-27
- Oracle中for循环的使用方法 2023-07-04
- user32.dll 函数说明小结 2022-12-26
- WPF使用DrawingContext实现绘制刻度条 2023-07-04
- 在C# 8中如何使用默认接口方法详解 2023-03-29
- Unity3D实现渐变颜色效果 2023-01-16
- C# 使用Aspose.Cells 导出Excel的步骤及问题记录 2023-05-16