2011-01-30 3 views
1

ASP.Net 사용자 정의 컨트롤 (* .ascx) 파일에 XAML 코드를 작성했기 때문에 Silverlight 툴킷의 이름 공간을 Silverlight에서 인식하는 데 많은 어려움을 겪고 있습니다.ASCX 사용자 컨트롤 파일에 Silverlight XAML 내용 포함 문제

Google 검색 및 검색 (Stacked? maybe)하지만 나에게 도움이되는 것은 없습니다.

이것이 어떻게 든 완료 될 수 있다고 확신합니다. 이전에 작동하는 것으로 보았습니다. 우리는 (의 .ascx) 파일의 XAML 내용을 작성 후

우리는 ( .XAP) 런타임에 XamlReader를 통해 XAML 내용을로드하고 그 실행 실버 실행 파일에 이러한 내용을 보낼 수 있습니다.

가 ASCX 파일의 헤드 부분이다 : 나는 도움이 XAML 코드가,

<%@ 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"> 

내가 뭘하려고 오전 실버 라이트 툴킷의 차트를 그릴 수있는 데이터를 바인딩 :

<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 참조가 Xap 프로젝트에 있어야하므로 Xapl 프로젝트와 Xaml 프로젝트에서 이러한 DLL을 사용하지 않아도됩니다.

몇 가지 대안이 있지만 심각하게 더 복잡하여 예상되는 참조 된 dll을 훨씬 잘 예측할 수 있습니다.

Silverlight 응용 프로그램은 클라이언트 컴퓨터에 설치된 Silverlight SDK에 액세스 할 수 있어야한다는 인상을 받고있는 것으로 보입니다. 컴파일러가 아닌 MSBuild 또는 Visual Studio에만 관심이 있으며 컴퓨터에 설치된 내용이 사용됩니다. Silverlight 응용 프로그램을 실행하면 Xap에 포함 된 내용이나 다운로드 할 수있는 내용 만 사용할 수 있으며 클라이언트에 설치된 dll은 사용할 수 없습니다.

+0

대단히 고맙습니다. 오류가 발생했으나 적어도 현재 진행 중입니다. 그 오류에 대한 또 다른 질문을 게시 할 것입니다. 당신은 내 Jon Skeet입니다 :) 그리고 다른 사람은 이것이 가능하다는 것을 증명해 주셔서 감사합니다. –

1

aspx, ascx 또는 html 페이지에서 Silverlight를 사용하더라도 상관 없습니다. 규칙은 동일합니다.

<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에 배치해야합니다 코드의 유형은 다음과 같습니다 실버 라이트는 브라우저 플러그인 등 내용이 HTML 개체 태그를 포함해야합니다.

자세한 내용은 How to: Add Silverlight to a Web Page by Using HTML을 참조하십시오.

+0

당신이 나에게 맞지 않았어, 나는 초급자가 아니야. 나는 내가하는 일을 안다. XAML 마크 업은 ASCX 파일에 그대로 쓰여질 수 있습니다. 임베디드는 아닙니다. 문제는 유효한 네임 스페이스를 인식 할 수 없다는 것입니다. –

0

실버 두 가지 방법으로 인스턴스화 할 수 있습니다

1) 실버 라이트 한 스타일 앱을 만 XAML와 자바 스크립트를 사용하여. 여기에는 관리 코드가없고 UserControl도 없습니다. 이 경우 XAML을 대략 이와 같이 포함 할 수 있습니다 (요즘 거의 사용되지 않으므로이 구식 구문을 찾아야합니다).

2) 관리 코드를 사용하는 Silverlight 2 이상의 앱. 이 경우 <object> 태그를 사용해야합니다. 따라서 직접 ASCX 파일에 XAML을 포함시키지 마십시오. Silverlight 응용 프로그램 또는 Silverlight 클래스 라이브러리에서 XAML을 사용하고 .xap 파일을 만들고 <object> 태그가있는 .xap 파일을 가리 킵니다. ASCX.

당신이하려는 것을 분명히 할 수 있습니까? # 2 (관리되는 코드 앱)을 원하는 것처럼 보이지만 Silverlight 1 스타일 앱을 원한다면 그에 응답 해주세요. 정확히 어떻게 수행 할 것인지 대답을 업데이트 할 수 있습니다.

관련 문제