Blend中的"DOM /脚本桥已禁用"错误

Tob*_*ans 2 silverlight expression-blend

我已经获得了一个自定义的Silverlight控件,每次我在Blend中打开它时,都会出现"DOM/scripting bridge is disabled"错误.

查看控件的源代码,我可以看到调用

public override void OnApplyTemplate()
    {
           ...
   HtmlPage.Window.Invoke("GetPrimaryGradStart").ToString()
Run Code Online (Sandbox Code Playgroud)

我猜这可能是问题所在.关于我能做什么的任何想法,还是我回到纯XAML?

干杯

托比

ale*_*kop 6

通常(即当Silverlight应用程序嵌入HTML页面时)必须通过HTML或JavaScript将"enablehtmlaccess"参数设置为true,因为否则不允许调用HtmlPage.Window.Invoke(并抛出异常) ).所以我猜问题是混合确实/不能设置该参数,而只显示该消息.如果您可以控制代码,则可以使用DesignerProperties.IsInDesignTool添加一个检查您是处于设计模式还是运行时模式的条件,例如:

if (!DesignerProperties.IsInDesignTool)
{
    // Do the "evil stuff"
    HtmlPage.Window.Invoke("GetPrimaryGradStart");
}
Run Code Online (Sandbox Code Playgroud)

希望有所帮助.

干杯,亚历克斯

编辑:如果它确实有帮助,您可能还想在代码中添加一些预编译器指令,这样您就不会在生产应用程序中使用这些设计工具填充语句:

#if !RELEASE
if (!DesignerProperties.IsInDesignTool)
#endif
HtmlPage.Window.Invoke("GetPrimaryGradStart");
Run Code Online (Sandbox Code Playgroud)