0

我将 silverlight 与 asp.net 一起使用。我已使用以下代码将 silverlight 内容添加到 asp.net 母版页

<div style="width:200px">
     <object data="data:application/x-silverlight-2," 
             type="application/x-silverlight-2" width="100%" style="height: 1000px">
          <param name="source" value="ClientBin/SilverlightSummary.xap"/>
          <param name="onError" value="onSilverlightError" />
          <param name="background" value="white" />
          <param name="minRuntimeVersion" value="4.0.50401.0" />
          <param name="autoUpgrade" value="true" />
          <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50401.0" style="text-decoration:none">
              <img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/>
          </a>
        </object><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe>
    </div>

在silverlight MainPage.xaml 中有一个按钮,当单击该按钮时,它会打开一个ChildWindow。

 private void btnView_Click(object sender, RoutedEventArgs e)
        {
            PopUpWindow PPW = new PopUpWindow();
            PPW.chart1.DataContext = App.Current.Resources["ChartResult"];

            PPW.Show();
        }

问题是子窗口仅在母版页中显示,它没有用 asp.net 母版页和内容页覆盖整个屏幕。我怎样才能让它在全屏上显示子窗口

4

1 回答 1

0

我认为您要问的是,当只有子内容(即 silverlight 对象)托管在页面的一小部分中时,Silverlight 会在整个页面上执行“阻止”。理论上,silverlight 应用程序只能对代表它的整个对象执行阻塞。该对象被保存在那个“div”中,所以在最好的情况下,它只能阻止到那个 div。除此之外,它只能通过消息与其他元素通信,但不能提供您寻求的覆盖/阻止。所以答案是换个角度看问题(有可能解决这个问题……)..(忽略悲惨的解决方案)

你有什么选择?

可悲的解决方案: - 将您希望阻止的所有项目包含在 silverlight 控件中,而不是在 aspx 页面上 - 将整个应用程序放在 silverlight 中......不太可行

真正的解决方案 - 如果它是您希望显示的图像,将图像渲染到 aspx 站点的临时子目录,定义一个 javascript 函数以通过显示灯箱在页面上执行阻止,然后从 silverlight 调用该 javascript 按钮(您'是最好的选择)。- 如果是文本或其他,请使用与上述选项类似的技术。- 当来自javascript的灯箱关闭时,调用silverlight方法(如果需要)来刷新silverlight对象。

如何在 silverlight 和 javascript 之间来回通信的示例在我回答的另一篇文章中。这里 - ASP.NET MVC 到 Silverlight 通信

于 2012-02-25T18:59:25.707 回答