2011-01-30 6 views
1

ASP.Netユーザーコントロール(* .ascx)ファイルにXAMLコードを記述している可能性がありますので、Silverlightツールキットの名前空間をSilverlightに認識させることに多大なトラブルがあります。ASCXユーザーコントロールファイルにSilverlight XAMLコンテンツを含めると問題が発生する

私はグーグルで検索しましたが(スタックされていますか?多分)、何も私のために働いていませんでした。

これは何とかやってもいいと思いますが、私はこれまでに働いていました。我々は(た.ascx)ファイルにXAMLの内容を記述した後

は、我々は(の.xap)実行時にXamlReaderを経由してXAMLの内容をロードし、それを実行Silverlightの実行可能ファイルにこれらのコンテンツを送信します。

これは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のツールキットでチャートを描画することです、私はデータバインディングを支援するために、この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 "は、ツールキットがインストールされていてもサンプルが正常に動作していても不明な名前空間です。このアセンブリへの参照を追加しました(コントロール)

C:\Program Files (x86)\Microsoft SDKs\Silverlight\v4.0\Toolkit\Apr10\Bin 

私はVS2010、ありがとうございます。

答えて

3

XAPファイルにツールキットのDataVisualization dllが含まれていないため、このエラーが発生する可能性があります。 XAPを生成するためにコンパイルしたプロジェクトでは、後でダウンロードされるXamlが参照するすべてのdllへの参照を追加する必要があります。

ダウンロードされたXamlを解析するために使用されるXamlReaderがダウンロードされたXaml内のすべてのdll参照を動作させるために、Xaplプロジェクトで見つかったXamlとCodeでこれらのdllを使用しなくても、Xapプロジェクトに存在する必要があります。

いくつかの選択肢がありますが、予想される参照されたdllがはるかに優れていると予想できる場合は、それらは深刻に複雑です。

Silverlightアプリケーションは、クライアントマシンにインストールされているSilverlight SDKにアクセスできる必要があります。これは当てはまりません。コンパイルされたMSBuildまたはVisual Studioだけが興味を持ち、マシンにインストールされているものを使用します。実行中のSilverlightアプリケーションは、Xapに含まれているものやダウンロード可能なものだけを利用することができます。クライアントにインストールされているdllは使用できません。

+0

ありがとう、私はエラーが発生していますが、少なくとも私は今すぐ軌道に乗っています。私はそのエラーに関する別の質問を掲示します。あなたは私のJon Skeetです:)そしてもう一つはこれが実行可能であることを証明してくれてありがとう。 –

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を参照してください。

+0

あなたは私を正しく理解できませんでした。私は初心者ではありません。私は何をしているのか知っています。 XAMLのマークアップは、ASCXファイルのように記述することができます。埋め込みではありませんが、問題は、名前空間を有効なものとして認識できないことです。 –

0

Silverlightは、二つの方法でインスタンス化することができます。

1)Silverlightの1つのスタイルアプリ、のみXAMLとJavaScriptを使用して。これにはマネージコードはなく、UserControlもありません。この場合、XAMLをこのように大雑把に埋め込むことができます(これは、まれに使用されているため、この古い構文を参照する必要があります)。

2)マネージコードを使用するSilverlight 2+アプリ。この場合、<object>タグを使用する必要があります。したがって、XAMLを直接ASCXファイルに埋め込むことはできません.XAMLをSilverlightアプリケーションまたはSilverlightクラスライブラリに入れ、.xapファイルを作成し、<object>タグを使用して.xapファイルを参照しますASCX。

あなたはどちらをしようとしているのかを明確にすることはできますか? #2(マネージコードアプリ)が欲しいと思うが、Silverlight 1スタイルのアプリをやりたいのであれば、それに答えてください。

関連する問題