我正在研究一些Silverlight控件,我想明确处理它们在Blend中出现的方式。 具体来说,这些控件具有在运行时初始化的依赖项,因此会在设计器中抛出异常。但即使没有例外,我也希望它们在Blend中以某种方式出现。
我知道这可以通过WPF(使用myassembly.VisualStudio.Design.dll)实现,但我无法找到有关使用Silverlight执行此操作的信息。
我已经看到了here所描述的黑客攻击检查:
bool designTime = (System.Windows.Browser.HtmlPage.IsEnabled == false);
我更喜欢更明确的解决方案。
答案 0 :(得分:4)
how to deal with design time extensibility here上有一篇非常详细的帖子。在那里,您将了解如何为Silverlight执行Visual Studio和Blend设计时间。
控制供应商和编写自定义控件的人经常发现自己希望能够为自定义控件提供更好的体验。 但是,关于这个主题的公共信息非常缺乏。我决定用这篇短短50多页的文章来纠正这种情况。
就像我说的那样,很长。 :)
答案 1 :(得分:2)
要检查的具体属性是DesignerProperties
:
using System.ComponentModel.DesignerProperties
if (DesignerProperties.GetIsInDesignMode(this))
{
}
其中this
是DependencyObject
(任何视觉元素)。