带有asp.net主页的Silverlight ChildWindow

时间:2012-02-25 04:46:48

标签: asp.net silverlight childwindow

我正在使用带有asp.net的silverlight.i已使用以下代码将内容添加到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母版页和内容页面覆盖整个屏幕。我可以让它在ful屏幕上显示childWindow

1 个答案:

答案 0 :(得分:0)

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

你有什么选择?

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

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

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