我在使Silverlight识别Silverlight工具包的名称空间时遇到了很多麻烦,可能是因为我在ASP.Net用户控件(* .ascx)文件中编写了XAML代码。
我在谷歌搜索并搜索过(堆积?可能),但没有任何对我有用。
我确信这可以以某种方式完成,我之前已经看过它。
在( .ascx)文件中写入XAML内容之后,我们将这些内容发送到( .xap)silverlight可执行文件,该文件在运行时通过XamlReader加载XAML内容。时间并执行它。
这是ASCX文件的主要部分:
<%@ Control Language="C#" AutoEventWireup="false" CodeBehind="TargetChartByVisits2.ascx.cs" Inherits="Mynamespace.TargetChartByVisits2" %>
<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Toolkit"
xmlns:datavis="clr-namespace:System.Windows.Controls.DataVisualization;assembly=System.Windows.Controls.DataVisualization.Toolkit"
xmlns:charting="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit"
xmlns:chartingprimitives="clr-namespace:System.Windows.Controls.DataVisualization.Charting.Primitives;assembly=System.Windows.Controls.DataVisualization.Toolkit"
xmlns:data="clr-namespace:MyNamespace.MyCharts;assembly=MyNamespace.MyCharts"
Width="350" Height="400">
我想要做的是在Silverlight Toolkit中绘制图表,我有这个XAML代码来协助数据绑定:
<controls:ObjectCollection x:Key="SeriesData">
<asp:Repeater ID="Repeater1" DataSource="<%# vwMain %>" runat="server">
<ItemTemplate>
<data:ChartDataElement MeasurementDate="<%# HttpUtility.HtmlEncode(Sql.ToString(Eval("MeasurementDate"))) %>" VisitReading="<%# HttpUtility.HtmlEncode(Sql.ToString(Eval("VisitAmount"))) %>" VisitTarget="<%# HttpUtility.HtmlEncode(Sql.ToString(Eval("Visit_TargetAmount"))) %>" />
</ItemTemplate>
</asp:Repeater>
</controls:ObjectCollection>
我得到一个错误,clr-namespace:System.Windows.Controls; assembly = System.Windows.Controls.Toolkit“是一个未知的命名空间,即使我安装了工具包,样本运行良好,我' ve从
添加了对此程序集(控件)的引用C:\Program Files (x86)\Microsoft SDKs\Silverlight\v4.0\Toolkit\Apr10\Bin
我正在使用VS2010,谢谢。
答案 0 :(得分:3)
我怀疑您会收到此错误,因为您的XAP文件不包含工具包的DataVisualization dll。在您编译生成XAP的项目中,您需要添加对随后下载的Xaml可能引用的所有dll的引用。
即使在Xap项目中找到Xaml和Code,也不要使用这些dll,以便用于解析下载的Xaml的XamlReader工作,下载的Xaml中的所有dll引用都需要存在于Xap项目中。 / p>
有一些替代方案,但它们非常复杂,所以如果你可以预期更好的预期参考dll。
看来你的印象是,silverlight应用程序应该能够访问客户端计算机上安装的任何Silverlight SDK。情况并非如此,只有编译MSBuild或Visual Studio才会感兴趣,并使用机器上已安装的内容。运行Silverlight应用程序只能使用Xap中包含的内容或它可以下载的内容,它不能使用客户端上安装的dll。
答案 1 :(得分:1)
如果您在aspx,ascx或html页面中使用Silverlight并不重要,规则是相同的。 Silverlight是一个浏览器插件,因此内容必须嵌入HTML对象标记:
<object width="300" height="300"
data="data:application/x-silverlight-2,"
type="application/x-silverlight-2" >
<param name="source" value="SilverlightApplication1.xap"/>
</object>
这是您需要在ascx页面中放置的代码类型,而不是XAML。
有关详细信息,请参阅How to: Add Silverlight to a Web Page by Using HTML。
答案 2 :(得分:0)
Silverlight可以通过两种方式实例化:
1)Silverlight 1风格的应用程序,仅使用XAML和JavaScript。这没有托管代码,也没有UserControl。在这种情况下,您可以像这样大致嵌入XAML(我必须查找这个古老的语法,因为它现在很少使用)。
2)Silverlight 2+应用,使用托管代码。在这种情况下,您必须使用<object>
标记。因此,您不会像这样直接将XAML嵌入ASCX文件中 - 而是在Silverlight应用程序或Silverlight类库中使用XAML,构建.xap文件,并使用{{1指向.xap文件来自ASCX的标签。
你能澄清一下你想要做的吗?看起来你想要#2(托管代码应用程序),但是如果你想要做一个Silverlight 1风格的应用程序,请回复一下,我可以更新我的答案,确切地知道如何做到这一点。