因此,我想从ASP.NET网页上的某些数据创建一些Silverlight图表。使用Visifire(我当前的工作)或即将推出的Silverlight图表进行此操作的方法似乎是创建一些XAML或至少一些Silverlight对象(例如在此Visifire示例中),然后以某种方式将它们填充到页面中。
奇怪的是,执行此操作的唯一方法似乎是通过JavaScript!也就是说,我必须执行以下操作:
用户- >点击按钮- > JavaScript事件处理程序- > AJAX调用从服务器片面的方法来获得XAML -
东西的XAML串入(如客户端片面HTML 一般这种或类似这样的的Visifire,具体方法) 。
这是非常违反直觉的!我更想在里面做这样的事情MyPage.aspx.cs:
MyPage.aspx.cs
protected void MyButton_Click(object sender, EventArgs e) { this.MyFictionalSilverlightControl.Xaml = this.GenerateXamlFromData(); }
那会更好!即使效率低下,我也很乐意将其保留MyFictionalSilverlightControl在其中UpdatePanel;我只是希望我知道如何制作这样一个虚构的Silverlight控件。
MyFictionalSilverlightControl
UpdatePanel
有任何想法吗?或有关如何更好地做到这一点的建议?
我建议使用一种更AJAXy的方法:让JS请求XAML,然后在从服务器返回XAML之后,运行时将该XAML插入控件(请参见HTML Bridge)中。这样,您的控件就可以对新显示进行漂亮的动画处理/过渡。
不过,您可以执行自己的目标:
… asp:Silverlight ID =“ Xaml1” runat =“ server” Source =“〜/ ClientBin / myXAMLPage.aspx” MinimumVersion =“ 2.0.30523” Width =“ 100%” Height =“ 100%”>
现在,每当用户单击一个按钮时,将呈现“更新面板”(包含Silverlight控件),并且SL控件将请求XAML文件并呈现其找到的内容。
请注意,此方法使用XAML文件实例化控件。这意味着您将无法在Silverlight中使用托管代码。如果需要托管代码,请指定.xap文件,然后使用initparam指定“ myXAMLPage.aspx”,而不是在源代码中指定“ myXAMLPage.aspx”页面。在您的Silverlight应用程序内部,下载xaml文件(WebClient或其他),然后使用XamlReader.Load加载并显示它。
hth,埃里克