小编典典

有没有一种方法可以使用ASP.NET隐藏代码将Silverlight XAML插入我的页面?

ajax

因此,我想从ASP.NET网页上的某些数据创建一些Silverlight图表。使用Visifire(我当前的工作)或即将推出的Silverlight图表进行此操作的方法似乎是创建一些XAML或至少一些Silverlight对象(例如在此Visifire示例中),然后以某种方式将它们填充到页面中。

奇怪的是,执行此操作的唯一方法似乎是通过JavaScript!也就是说,我必须执行以下操作:

用户- >点击按钮- > JavaScript事件处理程序- > AJAX调用从服务器片面的方法来获得XAML -

东西的XAML串入(如客户端片面HTML
一般这种类似这样的的Visifire,具体方法

这是非常违反直觉的!我更想在里面做这样的事情MyPage.aspx.cs

protected void MyButton_Click(object sender, EventArgs e)
{
    this.MyFictionalSilverlightControl.Xaml = this.GenerateXamlFromData();
}

那会更好!即使效率低下,我也很乐意将其保留MyFictionalSilverlightControl在其中UpdatePanel;我只是希望我知道如何制作这样一个虚构的Silverlight控件。

有任何想法吗?或有关如何更好地做到这一点的建议?


阅读 176

收藏
2020-07-26

共1个答案

小编典典

我建议使用一种更AJAXy的方法:让JS请求XAML,然后在从服务器返回XAML之后,运行时将该XAML插入控件(请参见HTML
Bridge)中。这样,您的控件就可以对新显示进行漂亮的动画处理/过渡。

不过,您可以执行自己的目标:

  • Silverlight服务器控件拍到“ 更新面板”中。
  • 编写一个aspx页面以生成XAML(更改DocType以使事情变得更容易)
  • 将Silverlight服务器控件指向.ASPX页面:

… asp:Silverlight ID =“ Xaml1” runat =“ server” Source =“〜/ ClientBin /
myXAMLPage.aspx” MinimumVersion =“ 2.0.30523” Width =“ 100%” Height =“ 100%”>

  • 每当用户单击您的按钮时,触发UpdatePanel即可执行此操作。

现在,每当用户单击一个按钮时,将呈现“更新面板”(包含Silverlight控件),并且SL控件将请求XAML文件并呈现其找到的内容。

请注意,此方法使用XAML文件实例化控件。这意味着您将无法在Silverlight中使用托管代码。如果需要托管代码,请指定.xap文件,然后使用initparam指定“
myXAMLPage.aspx”,而不是在源代码中指定“
myXAMLPage.aspx”页面。在您的Silverlight应用程序内部,下载xaml文件(WebClient或其他),然后使用XamlReader.Load加载并显示它。

hth,埃里克

2020-07-26