`
yaoyuan
  • 浏览: 26341 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

记录一些WPF

    博客分类:
  • .Net
阅读更多

1.

DispatcherUnhandledException 事件处理程序接受一个传递给它的 DispatcherUnhandledExceptionEventArgs 参数,该参数包含关于未处理异常的上下文信息,其中包括异常本身 (DispatcherUnhandledExceptionEventArgs..::.Exception)。使用该信息可以确定如何处理异常。

在处理 DispatcherUnhandledException 时,应当将 DispatcherUnhandledExceptionEventArgs..::.Handled 属性设置为 true;否则,WPF 仍会将异常视为未处理的异常,并恢复前面描述的默认行为。如果引发未处理的异常,并且或者 DispatcherUnhandledException 事件未被处理,或者该事件被处理但 Handled 被设置为 false,则应用程序会立即关闭。而且,不会再引发其他 Application 事件。因此,如果应用程序具有必须在应用程序关闭之前运行的代码,则需要处理 DispatcherUnhandledException

 

2.

对于在主 UI 线程上运行的代码未处理的每个异常,Application 都将引发一个 DispatcherUnhandledException

 

3.

Invoke 是同步操作,而 BeginInvoke 是异步操作

 

4.

Pack URI 方案使用“pack”作为它的方案,并且包含两个组件:授权和路径。以下是 pack URI 的格式。

pack://授权/路径

授权 指定包含部件的程序包的类型,而路径 则指定部件在程序包中的位置

 

5.

为了确定 pack URI 引用的文件的类型,WPF 使用下面的试探法来解析本地程序集中的资源文件以及内容文件的 URI:

  1. 探测与 pack URI 匹配的 AssemblyAssociatedContentFileAttribute 属性的程序集元数据。

  2. 如果找到 AssemblyAssociatedContentFileAttribute 属性,则 pack URI 的路径引用内容文件。

  3. 如果未找到 AssemblyAssociatedContentFileAttribute 属性,则探测被编译到本地程序集中的资源文件集。

  4. 如果找到与 pack URI 的路径匹配的资源文件,则 pack URI 的路径引用资源文件。

  5. 如果未找到合适的资源,则内部创建的 Uri 无效。

6.

如果未处理 Closing,或者处理但未取消,则窗口将关闭。在窗口真正关闭之前,会引发 Closed。这时无法阻止窗口关闭。只有在Closing事件里才能阻止窗口关闭

 

7.

  • 应将按 Esc 键配置为与按“取消”按钮等效的键盘快捷键。可以通过将“取消”按钮的 IsCancel 属性设置为 true 来实现此目的。

  • 应将按 Enter(或 Return)键配置为与按“确定”按钮等效的键盘快捷键。可以通过将“确定”按钮的 IsDefault 属性设置为 true 来实现此目的。

  •  

    8.

    递归检查一个控件及其子控件内,是否有Validation是failed的

    // Validate all dependency objects in a window
            bool IsValid(DependencyObject node)
            {
                // Check if dependency object was passed
                if (node != null)
                {
                    // Check if dependency object is valid.
                    // NOTE: Validation.GetHasError works for controls that have validation rules attached
                    bool isValid = !Validation.GetHasError(node);
                    if (!isValid)
                    {
                        // If the dependency object is invalid, and it can receive the focus,
                        // set the focus
                        if (node is IInputElement) Keyboard.Focus((IInputElement)node);
                        return false;
                    }
                }

                // If this dependency object is valid, check all child dependency objects
                foreach (object subnode in LogicalTreeHelper.GetChildren(node))
                {
                    if (subnode is DependencyObject)
                    {  
                        // If a child dependency object is invalid, return false immediately,
                        // otherwise keep checking
                        if (IsValid((DependencyObject)subnode) == false) return false;
                    }
                }

                // All dependency objects are valid
                return true;
            }

     

    9.

    Remember, the property wrappers shouldn’t contain any logic, because properties
    may be set and retrieved directly using the SetValue() and GetValue() methods of the base
    DependencyObject class.

    分享到:
    评论

    相关推荐

      WPF周报记录程序

      **WPF周报记录程序**是一个使用Windows Presentation Foundation(WPF)框架开发的应用程序,它专为记录工作周报而设计。WPF是.NET Framework的一部分,由Microsoft开发,提供了丰富的用户界面(UI)功能,包括数据...

      wpf记录错误日志

      wpf写的错误日志记录。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

      WPF 多语言(通过ini记录当前语言)

      通过以上步骤,我们就能实现一个基于ini文件记录当前语言的WPF多语言应用。这种方法的优点在于它允许用户自定义界面语言,同时保持配置的轻便性。不过,需要注意的是,对于大型项目,可能需要考虑更复杂的本地化策略...

      PaginationControl_wpf分页_分页控件_

      // 每页显示10条记录 PaginationControl.ItemsSource = view; ``` 最后,确保在主界面设计时,控件的样式与整体应用风格保持一致,可以通过修改控件模板来自定义其外观。在资源字典中定义一个新的样式,并在控件...

      Wpf log4net 日志

      在.NET开发领域,尤其是使用C#进行Windows Presentation Foundation(WPF)应用开发时,日志管理是一个非常重要的实践。Log4net是Apache软件基金会的一个开源项目,它为.NET应用程序提供了强大的日志记录功能。本...

      购房赃款记录财务软件C#基于WPF框架编写

      【标题】"购房赃款记录财务软件C#基于WPF框架编写"涉及到的主要知识点包括C#编程语言、Windows Presentation Foundation(WPF)框架以及财务管理软件的开发。这是一款专为记录购房付款流程设计的财务软件,它利用了...

      WPF 记录查询器(Notes)

      为了生活中,工作中记住要记录的东西,以便查询(包括:工作相关信息,生活常识,笑话等),而做的一个小软件以下称notes。 因为我是做Winform程序的,所以notes的初期是用winForm做的;后来学习了wpf,又把软件界面...

      WPF用MVVM设计模式模拟微信PC版,下载可直接运行

      在本文中,我们将深入探讨如何使用WPF(Windows Presentation Foundation)和MVVM(Model-View-ViewModel)设计模式来模拟微信PC版的应用程序。这个项目不仅涵盖了基础的UI设计,还包括了实现微信的关键功能,如扫码...

      WPF流程图 开发

      首先,在鼠标按下时记录当前位置,然后在鼠标移动事件中计算差值并更新控件的位置。最后,当鼠标释放时,停止更新。 2. **缩放**:实现缩放功能,通常会使用MatrixTransform或ScaleTransform。用户可以通过滑动条或...

      wpf 录音和播放音频

      在.NET框架4.5环境下,使用Visual Studio 2017开发WPF(Windows Presentation Foundation)应用程序时,我们可以实现录音和播放音频的功能。这涉及到多媒体处理和用户界面交互,是许多应用,如聊天软件、教育工具等...

      WPF人员管理系统界面

      一个完善的人员管理系统通常包括员工信息管理、权限分配、考勤记录、工资计算等功能。在WPF环境中,这些功能可以通过各种控件和数据绑定技术实现。例如,可以使用ComboBox来选择员工的职位,DatePicker用于输入入职...

      WPF-log4net示例

      WPF_log4net示例包含 1、在线更新。 2、log4net日志输出。

      WPF录制屏幕与视频录像

      在这个场景中,WPF被用来创建一个能够捕捉和记录屏幕活动的界面。 项目1:录制屏幕 这个项目的目标是创建一个能够捕获用户电脑屏幕的程序。在WPF中,我们可能需要使用System.Windows.Media命名空间下的类,如...

      wpf通过datagrid操作数据库,实现datagrid增删改操作。

      - **添加**:在DataGrid底部通常会有一个“新增”按钮,当用户点击时,可以通过在数据源中添加新行来创建新的记录。可以使用`DataGrid.ItemsSource.Add()`方法添加新项。 - **删除**:用户选择一行后,点击“删除...

      WPF DataGrid 行拖拽

      在Windows Presentation Foundation (WPF)框架中,DataGrid控件是一种强大的数据展示工具,它允许用户以表格形式显示和操作数据。默认情况下,WPF DataGrid的列支持拖放功能,用户可以方便地调整列的位置。然而,...

      硬件管系统(wpf)

      10. **异常处理和日志记录**:为了确保软件的稳定性和可维护性,良好的异常处理和日志记录机制是必不可少的。 学习这个硬件管理系统(WPF),开发者可以深入理解C#编程、WPF框架、MVVM模式以及如何与硬件设备交互。...

      WPF反编译专用.zip

      1. **ILSpy.exe.config**:这是ILSpy应用程序的配置文件,它定义了程序运行时的环境设置和行为,例如日志记录、内存使用等。通过修改此配置文件,用户可以定制ILSpy的行为以适应自己的需求。 2. **ICSharpCode....

      C# wpf 版计算器

      在本文中,我们将深入探讨如何使用C#编程语言和Windows Presentation Foundation(WPF)框架创建一个仿照Windows操作系统内置计算器的版本。WPF是.NET Framework的一部分,它为开发富客户端应用程序提供了强大的支持...

      WPF物资库存Demo源码及数据库

      数据库部分可能包括了物资信息、入库记录、出库记录等关键表的设计,可能采用关系型数据库管理系统,如SQL Server。"SQL.rar"可能是数据库脚本或者数据库备份文件,用于恢复和操作库存数据。通过这个数据库,开发者...

    Global site tag (gtag.js) - Google Analytics