0

假设我们想要创建一个 UserControl 并使其能够被调用者设置样式。

在这种情况下,我们有哪些选择?

  1. 据我了解,我们可以在 UserControl 的 xaml 中使用 DynamicResources。
  2. 我们可以公开一些 DP 并将 UserControl 的元素绑定到它们。

有时我会遇到使用 UserControl 但无法在屏幕上呈现的情况。如果发生这种情况,我开始探索解决方案并尝试了解 UserControl 找不到哪些资源。

这导致时间的显着损失。

我们怎样才能避免这样的麻烦呢?

我看到的一个解决方案是在那些使用 DynamicResources 的 UserControls 中编写一些代码,以试图找到所需的资源并引发异常。它可以简化调试。

我们在解决方案中拥有的资源越多,我们就越头痛。

4

1 回答 1

1

您应该使用依赖属性,然后控件的使用者/主机可以以声明方式或编程方式将动态资源绑定到它们。

不要自己去寻找动态资源,这会在您的控件中引入依赖关系,相反,您应该使用给定的内容。如果你没有得到任何东西,你可以默认使用内置样式。

您应该考虑默认使用外部定义的动态资源的唯一时间是当您拥有一个非常复杂的控件(如数据网格)并且您还提供主题程序集(如控件供应商所做的)时。除此之外,使用 DP 方法更易于管理并且更容易记录。在任何情况下,如果找不到动态资源,您都不应该抛出异常。如果您以编程方式查找资源但未能找到它,则使用默认值。如果您在 XAML 中以声明方式绑定到动态资源源,则在未找到时让正常绑定错误发生,或者使用代理依赖属性与数据触发器组合

于 2013-12-27T06:10:06.910 回答