让我们假设,我们想要创建一个UserControl并使其能够被调用者设置为样式。
在这种情况下,我们有哪些选择?
有时候我会在使用UserControl时遇到这种情况,但无法在屏幕上呈现。如果发生这种情况,我将开始探索解决方案,并尝试了解UserControl无法找到哪些资源。
这导致了大量的时间损失。
我们如何防止这样的麻烦?
我看到的解决方案是在UserControls中编写一些代码,这些代码使用DynamicResources,试图找到所需的资源并抛出异常。它可以简化调试。
我们在解决方案中拥有的资源越多,我们就越痛苦。
答案 0 :(得分:1)
您应该使用依赖项属性,然后控件的使用者/主机可以以声明方式或编程方式将动态资源绑定到它们。
不要自己去寻找动态资源,这会在您的控件中引入依赖关系,而应该使用您所提供的内容。如果你没有给出任何东西,你可以默认使用内置样式。
你应该考虑默认为外部定义的动态资源的唯一一次是你有一个非常复杂的控件(如数据网格),你还提供主题程序集(如控件供应商那样)。除此之外,使用DP方法更易于管理,更易于记录。 在任何情况下,如果找不到动态资源,则不应抛出异常。如果您以编程方式查找资源但未能找到它,则具有默认值。如果您在XAML中以声明方式绑定到动态资源源,则在未找到时发生正常绑定错误,或者使用与数据触发器结合的代理依赖项属性