让我们假设,我们希望创建一个UserControl,并使它能够被调用者样式化。
在这种情况下,我们有哪些选择?
有时,当我使用UserControl时,我会遇到这样的情况,但它不能在屏幕上呈现。如果发生这种情况,我将开始探索解决方案,并尝试了解UserControl找不到哪些资源。
这导致了大量的时间损失。
我们怎样才能避免这些麻烦呢?
我看到的一个解决方案是在这些UserControls中编写一些代码,这些代码使用DynamicResources试图找到所需的资源并抛出异常。它可以简化调试。
我们在解决方案中拥有的资源越多,我们就越头疼。
发布于 2013-12-26 22:10:06
您应该使用依赖项属性,然后控件的使用者/宿主可以通过声明方式或编程方式将动态资源绑定到它们。
不要自己去寻找动态资源,这会在您的控件中引入一个依赖项,相反,您应该使用所提供的内容。如果您没有得到任何信息,则可以默认为内置样式。
唯一需要考虑默认使用外部定义的动态资源的情况是,当您有了一个非常复杂的控件(比如数据网格),并且还提供主题程序集(就像控件供应商那样)时。除此之外,使用DP方法对您来说更易于管理和更容易编写文档。无论如何,如果找不到动态资源,就不应该抛出异常。如果您正在以编程方式查找资源,但未能找到该资源,则有一个默认设置。如果在XAML中以声明方式绑定到动态资源源,则如果找不到正常绑定错误,则让它发生,或者使用代理依赖项属性和数据触发器相结合。
https://stackoverflow.com/questions/20795572
复制