WPF设计标准学习记录14


        
    
元素类型 属性名 属性值/说明
Application.Resources 资源容器 定义应用程序级别的资源集合
Style x:Key "ButtonStyle"(样式资源标识键)
TargetType Button(指定样式作用的目标控件类型)
Setter Property Width(设置按钮宽度属性)
Value 100(宽度单位为像素)
Setter Property Height(设置按钮高度属性)
Value 30(高度单位为像素)
Setter Property Background(设置按钮背景色属性)
Value Red(纯红色填充,HEX值为#FFFF0000)
Setter Property Foreground(设置按钮前景色属性)
Value White(纯白色文本,HEX值为#FFFFFFFF)

扩展建议



    
         
    
    
        
            
                 
            
        
    


    
元素类型 属性名 属性值/说明
Grid 布局容器 默认无显式属性,作为按钮的父容器
包含子元素 Button
Button Content "文字块"(按钮显示文本)
Style {StaticResource ButtonStyle}(引用应用程序级样式资源)
隐式继承样式属性 通过 ButtonStyle 实现:宽度100、高度30、红底白字(详见样式定义)

布局效果演示


扩展建议


public partial class App : Application
{
    protected override void OnStartup(StartupEventArgs e)
    {
        base.OnStartup(e);
 
        Uri uri = new Uri("MainWindow.xaml", UriKind.Relative);
        base.StartupUri = uri;
        
    }        
}

生命周期时序说明

1. 框架初始化 
   ├─ 注册系统服务(渲染引擎、输入处理)
   ├─ 加载应用程序级资源 
   └─ 触发Startup事件 
 
2. 本方法执行 
   ├─ 基类初始化完成 
   ├─ 主窗口路径解析 
   └─ 启动入口设置 
 
3. 窗口实例化阶段 
   └─ 框架自动执行:XAML解析 → 对象树构建 → 数据绑定 → 触发Loaded事件 
protected override void OnStartup(StartupEventArgs e)
{
    // 初始化应用程序启动流程 
    // 先执行基类启动逻辑(如资源加载、事件订阅等基础初始化)
    base.OnStartup(e);
 
    // 定义主窗口资源路径 
    // - 使用相对路径定位XAML文件,确保部署独立性 
    // - UriKind.Relative 表示相对应用程序根目录的路径解析方式 
    Uri uri = new Uri("MainWindow.xaml",  UriKind.Relative);
    
    // 设置应用程序启动主窗口 
    // 技术原理:框架将自动实例化并显示该XAML定义的窗口对象 
    // 注意:此属性赋值必须在基类初始化完成后执行 
    base.StartupUri = uri;
 
    /* 扩展建议:
     * 1. 动态窗口加载:可根据配置文件动态切换启动窗口 
     *    if(config.UseDashboard) uri = new Uri("Dashboard.xaml",  UriKind.Relative);
     * 
     * 2. 预加载优化:在显示主窗口前初始化全局资源 
     *    Application.Current.Resources.MergedDictionaries.Add(...);
     *
     * 3. 异常处理:增加路径校验逻辑,避免因XAML文件缺失导致启动崩溃 
     *    if(!File.Exists("MainWindow.xaml"))  throw new FileNotFoundException();
     */
}
注释位置 技术说明
base.OnStartup(e) 确保WPF框架初始化完整,包含消息循环建立、系统主题加载等底层操作
UriKind.Relative 路径解析模式选择:
- Relative:相对于应用程序集路径
- Absolute:需完整URI
StartupUri赋值 实际等效代码逻辑:
Application.Current.MainWindow = new MainWindow();
Application.Current.MainWindow.Show();

你可能感兴趣的:(wpf,学习)