首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

WPF 如何在绑定失败异常

在开发 WPF 程序,虽然 xaml 很好用,但是经常会出现小伙伴把绑定写错了。因为默认的 VisualStudio 是没有自动提示,这时很容易复制粘贴写出一个不存在的属性。...在 xaml 如果绑定失败了,那么内部会有一个异常,但是 WPF 不会把这个异常抛出来,这个异常也不会让用户拿到,只是会在输出窗口提示。...但是异常会影响性能,而且会让界面和设计的不一样,所以我就想在找到绑定异常就抛出,弹出窗口告诉小伙伴。 本文会告诉大家如何找到绑定失败,并且抛出异常,如何防止修改属性名让xaml绑定失败。...在绑定失败异常建议只在调试下抛出,抛出异常建议弹出,告诉开发者现在你的界面有绑定异常 拿到绑定信息 先来写简单的代码,做一个 ViewModel ,里面有两个属性 class ViewModel...is 'Text' (type 'String') 那么这个代码是否可以用来判断出现绑定失败,是的,让我来告诉大家如何拿到输出 转发绑定 因为绑定失败输出是使用 Trace ,关于 Trace 请看WPF

1.3K20

WPF 如何在绑定失败异常

在开发 WPF 程序,虽然 xaml 很好用,但是经常会出现小伙伴把绑定写错了。因为默认的 VisualStudio 是没有自动提示,这时很容易复制粘贴写出一个不存在的属性。...在 xaml 如果绑定失败了,那么内部会有一个异常,但是 WPF 不会把这个异常抛出来,这个异常也不会让用户拿到,只是会在输出窗口提示。...但是异常会影响性能,而且会让界面和设计的不一样,所以我就想在找到绑定异常就抛出,弹出窗口告诉小伙伴。 本文会告诉大家如何找到绑定失败,并且抛出异常,如何防止修改属性名让xaml绑定失败。...在绑定失败异常建议只在调试下抛出,抛出异常建议弹出,告诉开发者现在你的界面有绑定异常 拿到绑定信息 先来写简单的代码,做一个 ViewModel ,里面有两个属性 class ViewModel...is 'Text' (type 'String') 那么这个代码是否可以用来判断出现绑定失败,是的,让我来告诉大家如何拿到输出 转发绑定 因为绑定失败输出是使用 Trace ,关于 Trace 请看WPF

2.3K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    WPF 如何跨线程重新抛出异常

    有一些代码是在框架层写的,这部分代码不应该在后台线程抛出异常,如何将后台线程的异常在主线程抛出,同时不会带上主线程的堆栈可以保留异常的全部信息 在 .NET 提供了 ExceptionDispatchInfo...类,可以用于捕获某个异常,然后使用提供的抛出方法重新抛出 可以用在某个地方统一收集异常,然后统一抛出,此时抛出的异常的堆栈和信息都不会改变,会比下面的方法更好 public static...,特别是空异常 如果使用下面方法抛出,那么可以保存异常堆栈 private static void ReThrowException(Exception exception)...Dispatcher.InvokeAsync(() => { ExceptionDispatchInfo.Capture(exception).Throw(); }); } 代码放在 github 欢迎下载 在 WPF...框架我使用这个方法提了建议,在触摸线程的异常抛到主线程 详细请看 使用 ExceptionDispatchInfo 捕捉并重新抛出异常 - walterlv

    43120

    WPF 如何跨线程重新抛出异常

    有一些代码是在框架层写的,这部分代码不应该在后台线程抛出异常,如何将后台线程的异常在主线程抛出,同时不会带上主线程的堆栈可以保留异常的全部信息 在 .NET 提供了 ExceptionDispatchInfo...类,可以用于捕获某个异常,然后使用提供的抛出方法重新抛出 可以用在某个地方统一收集异常,然后统一抛出,此时抛出的异常的堆栈和信息都不会改变,会比下面的方法更好 public static...Exception exception) { throw exception; } 上面代码使用 throw 在另一个函数抛出,可以从堆栈看到,没有原先抛异常...KicaicicayiJearjelrelur.MainWindow.NalbibechaLuhaqayna() at KicaicicayiJearjelrelur.MainWindow..ctor() 这样进行异常调试就比较难知道是在哪个函数的异常...,特别是空异常 如果使用下面方法抛出,那么可以保存异常堆栈 private static void ReThrowException(Exception exception)

    91510

    WPF Process.Start 出现 Win32Exception 异常

    我在使用 WPF 其他其他软件的时候,发现出现Win32Exception异常。...如果这时 File.Exists(ProcessName) 为 false ,那么 Process.Start 就出现System.ComponentModel.Win32Exception异常,而且这个异常没有其他的信息...我使用的是WPF 封装 dotnet remoting 调用其他进程里面需要引用一个库用来做远程的软件,因为我使用一个库 A 引用了远程的软件,使用程序B引用了A,因为没有直接引用远程软件,所以就没有在输入路径找到这个文件...,所以出现异常。...其他可能出现异常的是: 启动的程序弹出 UAC 被用户取消 更多关于 remoting 的博客 WPF 封装 dotnet remoting 调用其他进程 .net remoting 抛出异常 .net

    1.2K10

    WPF 已知问题 清空 CollectionView 的 SortDescriptions 可能抛出空异常

    CollectionView 的 SortDescriptions 属性进行清空或者移除项时,也就是使用 SortDescriptionCollection 类型的清空或者移除项时,在 WPF 框架里面抛出空异常...此问题已经报告给 WPF 官方,请看 https://github.com/dotnet/wpf/issues/7389 我现在是一个成熟的开发者了,自己报告的 BUG 就要自己修。...此问题已修复,请看 https://github.com/dotnet/wpf/pull/7390 此问题的复现步骤如下 在一个 WPF 项目里面,构建出一个 CollectionViewSource...框架里面抛出空异常 异常的调用堆栈大概如下 > PresentationFramework.dll!...方法里面,将 _sourceCollection 设置为空,这就导致了在清空 SortDescriptionCollection 内容的时候,尝试获取 _sourceCollection 的属性时,抛出空异常

    66120

    WPF 使用 Dispatcher 的 InvokeAsync 和 BeginInvoke 的异常处理差别

    一般认为 WPF 的 Dispatcher 的 InvokeAsync 方法是 BeginInvoke 方法的平替方法和升级版,接近在任何情况下都应该在业务层使用 InvokeAsync 方法代替 BeginInvoke...本文将记录这两个在抛出异常时,进入的统一异常处理事件的差别 简单来说是在 InvokeAsync 抛出未捕获的异常,将会进入到 TaskScheduler.UnobservedTaskException...的异常,在 .NET Framework 4.5 之后,包含 dotnet core 和 dotnet 5 和 dotnet 6 以及更高版本,是不会导致应用程序退出进程 根据通用的 WPF 知识可以知道...事件 接下来是对此行为的测试代码 新建一个 WPF 项目,编写简单的界面,加上两个按钮,这两个按钮用来分别调用 InvokeAsync 和 BeginInvoke 抛出异常 <Window x:Class..."))); } 这里需要特别说明的是,咱是不应该抛出 Exception 类型的异常的,正确的做法是抛出特别类型的异常,例如 ArgumentException 等类型的异常。

    57210

    WPF 通过多进程实现异常隔离的客户端

    当 WPF 客户端需要实现插件系统的时候,一般可以基于容器或者进程来实现。如果需要对外部插件实现异常隔离,那么只能使用子进程来加载插件,这样插件如果抛出异常,也不会影响到主进程。...WPF 元素无法跨进程传输,但是窗口句柄(HWND)可以,所以可以将 WPF 元素包装成 HWND,然后通过进程间通信将插件传输到客户端中,从而实现插件加载。 1....使用 HwndSource 将 WPF 嵌入到 Win32 窗口 HwndSource 会生成一个可以嵌入 WPF 的 Win32 窗口,使用 HwndSource.RootVisual 添加一个 WPF...使用 HwndHost 将 Win32 窗口转换成 WPF 元素 Win32 窗口是无法直接嵌入到 WPF 页面中的,所以 .Net 提供了一个 HwndHost 类来转换。...如果不需要异常隔离,使用 mef 或者 prism 已经可以实现良好的插件功能。 System.AddIn 也可以提供类似的功能,但是只支持到 .net framework 4.8。

    1.4K30

    WPF 已知问题 在 WIC 层处理异常图片时 可能由于出现未处理异常导致进程退出

    在一些奇怪的系统上,解码一些奇怪的图片时,可能在解码器层抛出未捕获的本机异常,从而导致进程退出 我使用 ProcDump 工具抓到了一台服务器上 WPF 应用程序打开某个图片文件时,进程崩溃的问题,通过将...以上的代码里面的 0xC0000005 表示 CLR 未知异常,在本文的情况下需要看更具体的异常。通过如下调用堆栈等信息,可以看到是在 WindowsCodecs.dll!...详细请看 升级到 dotnet core 之后 HandleProcessCorruptedStateExceptions 无法接住异常 我将此问题报告给 WPF 官方:https://github.com.../dotnet/wpf/issues/8499 但是预估这个问题即使要解决也不是在 WPF 这一层解决。...这是因为 WPF 的多媒体编码解码是通过 WIC 层实现的,详细请看 dotnet 读 WPF 源代码笔记 WIC 多媒体图片处理通过 WindowsCodecs.dll 实现功能 为什么说此问题和 WPF

    21210
    领券