我可以处理 XAML 中引发的异常吗?

2024-05-04

在我的 XAML 中,我通过绑定到 GetAll 属性来获取所有客户:

<ListBox ItemsSource="{Binding GetAll}" 
     ItemTemplate="{StaticResource allCustomersDataTemplate}"
     Style="{StaticResource allCustomersListBox}">
</ListBox>

GetAll 属性是我的视图模型中的一个可观察集合,它调用模型来获取所有客户集合:

public class CustomersViewModel
{
    public ObservableCollection<Customer> GetAll {
        get
        {
            try
            {
                return Customer.GetAll;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
    }
}

如果模型中出现任何问题(格式错误的 XML 文件等),则异常会一直冒泡到 ViewModel 中的 GetAll 属性。

第一个问题:我很惊讶XAML 似乎没有做任何异常并继续前进并且不显示任何内容。这是设计使然吗?这是“脱钩”的一部分吗?

第二个问题:这让我想到我可以以某种方式处理 XAML 中的异常, 例如

伪代码:

<Trigger>
    <Trigger.OnException>
        <TextBox Text="The customer data could not be loaded."/>
    </Trigger.OnException>
</Trigger>

像上面的代码可能吗?


首先,我认为 XAML 异常并不应该被捕获。它们更多地作为一种工具存在,帮助开发人员了解如何修复 XAML 代码,尽管由于 XAML 标记的动态性质,它们当然必须在运行时(初始化)发生

也就是说,您可以通过将调用包装起来来轻松处理 XAML 异常InitializeComponents在你的构造函数内Windows班级。然后您可以捕获所有异常或专门XamlParseException,无论您认为合适。

示例来自这篇博文 https://web.archive.org/web/20200809032534/http://geekswithblogs.net/lbugnion/archive/2007/03/14/108728.aspx:

public partial class Window1 : System.Windows.Window 
{
    public Window1()
    {
        try
        {
            InitializeComponent();
        }
        catch (Exception ex)
        {
            // Log error (including InnerExceptions!)
            // Handle exception
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我可以处理 XAML 中引发的异常吗? 的相关文章

随机推荐

  • 如何通过使用内置的 Date 类来节省时间?

    这个问题的目的是使用内置的 Date 类收集日期 时间计算的解决方案 而不是编写冗长的复杂函数 我会自己写一些答案 如果有人想出一些非常聪明的东西 我会接受答案 但这主要是作为解决方案的集合 因为我经常看到处理日期的代码过于复杂 请记住这是
  • 我需要在函数中进行哪些更改才能将结果存储在变量中?

    我试图将函数的结果保存到变量中并在屏幕上打印该变量 但是当我打印时我看到 无 如何修复这个问题 import time def hours localtime time localtime time time print localtime
  • C# 导出为 Excel 格式

    行动结果 var strLawTable new StringBuilder strLawTable Append thead strLawTable Append tr strLawTable Append th Dollar th st
  • Android 启动完成后自动启动应用程序

    我想制作一个在其设置中具有自动启动选项的应用程序 我在我的应用程序中进行了从 PreferenceActivity 派生的设置活动 并为自动启动选项提供了 CheckBoxPreference 如果启用自动启动选项 我的应用程序应该在手机启
  • Xml 瞬态无法工作 jaxb(Moxy)。?

    Xml 瞬态注释不适用于以下模型 XmlRootElement public class JdfValidation private String name private String dataType private String er
  • Python 3 - 如何从高维数据制作马赛克图?

    我有一个 pandas DataFrame data pd read csv r C data path demographics csv sep print data PersonID Married No of Children Sex
  • 将抽屉布局添加到主要活动中

    我创建了一个应用程序 它工作得很好 但现在我想在主活动中包含导航抽屉 我知道代码模板 但为此我需要创建新活动 我的问题是如何将抽屉布局包含到现有活动中仅包含 Recycler 视图和 fab 按钮 是否可以包含 抱歉这个大问题 您可以按照以
  • 注册方法的方法在引发事件时调用

    我有一个包含 20 个 PictureBox 控件的面板 如果用户单击任何控件 我希望调用面板中的方法 我该怎么做呢 public class MyPanel Panel public MyPanel for int i 0 i lt 20
  • Visual Studio 将 1.1 扩展为 1.1000000000000001

    至少对我来说 这是有史以来最奇怪的 Visual Studio 2010 行为 我正在开发 MVC3 项目 我从另一个项目 也包括 VS2010 MVC1 如果重要的话 复制了一行代码 如下所示 target height height 1
  • Unity InputField OnValueChanged事件显示InputField.text少一个字符

    我有一个InputField我用它作为搜索栏 我无法自动搜索OnValueChanged因为最初 文本字段将是 现在如果我输入任何字符a the inputField text还是 代替a因此 在添加下一个字符之前不会进行搜索 有没有办法在
  • 如何从 Web 应用程序访问仅限身份验证的 Twitter API 方法

    我有一个 iPhone 网络应用程序 它最终将在 PhoneGap 应用程序中运行 但现在我在 Safari 中运行它 该应用程序需要访问 Twitter 好友的推文 包括私人推文 所以我使用 Scribe 库实现了 OAuth 我成功地将
  • 创建具有负边框半径的按钮并在 Flutter 中对齐它们

    我想建立一个这样的布局 其中两个外部元素是按钮 而内部元素是 TextField 如何在 Flutter 中创建这样的布局 我的想法是使用绝对位置来对齐每个元素的左侧 并使用标高来处理重叠 但我不确定这是最好的方法 而且我不知道如何创建按钮
  • 使用 IOS 8 编辑时键盘间歇性消失

    我遇到过几个案例 测试人员报告说 每当他们开始在我的应用程序中的某些字段中输入内容时 键盘就会消失 我使用模拟器跟踪流程 并在手机上调试时 问题从未发生 然而 当我在不受限制的手机上尝试时 它的发生相当一致 这是一些相关的代码 所有这些都是
  • NetBeans 7.4 中的 SASS

    我在 Windows 7 64 位 上使用 NetBeans 7 4 这样我就安装了 Ruby200 x64 这样我就可以使用 Sass scss 到 css CSS 预处理器在 NetBeans 中的配置如下 C Ruby200 x64
  • Javascript匿名函数调用[重复]

    这个问题在这里已经有答案了 我正在阅读 Twitter 上的 JS 源代码 在提高我的 JS 知识库的过程中 当我遇到了调用匿名函数的奇怪方式时 function window jQuery 这有效 对于每个人来说 这是显而易见的 func
  • 使用组合来表示“is – a”关系时出现的问题

    我正在为人力资源系统开发系统 有会计员工和程序员员工 加入公司的第一个月 员工没有被赋予任何角色 一名员工可以同时担任会计师和程序员 我有一个由以下代码所示的设计 现在 我需要通过实现新功能来增强系统 解雇所有会计师 终止意味着将员工的状态
  • 仅当捏住单元格的 imageView 时,才可以在 UICollectionView 的自定义单元格中放大/缩小 UIImageView 吗?

    我有一个 CollectionView 它有一个自定义单元格 我想放大 缩小单元格中的 imageView 所以我在 CollectionView m 添加捏合手势 当我向 self collectionView 添加手势时 如下所示 se
  • Service Fabric:服务之间的调用有延迟?

    我们正在开发一个由多个不同服务组成的服务结构应用程序 我们的应用程序工作方式的一个关键部分是这些服务需要大量相互调用 直到最近我们增加了应用程序的负载并发现它的速度大大减慢时 我们才遇到任何问题 经过大量调查和对各种事情进行计时后 我们发现
  • 双端队列中元素的随机访问如何给出恒定的时间复杂度? [复制]

    这个问题在这里已经有答案了 双端队列为访问任何元素提供了恒定的复杂性 参考参数 https en cppreference com w cpp container deque 在 Vector 中 它总是恒定的复杂性 向量中第一个元素的地址
  • 我可以处理 XAML 中引发的异常吗?

    在我的 XAML 中 我通过绑定到 GetAll 属性来获取所有客户