SilverLight aspx 페이지에서 사용자 정의 컨트롤 호출
8476 단어 silverlight
메서드 1, App. 수정xaml.cs 코드는 다음과 같습니다.
private void Application_Startup(object sender, StartupEventArgs e)
{
//this.RootVisual = new MainPage();
if (!e.InitParams.ContainsKey("InitPage"))
{
this.RootVisual = new MainPage();
return;
}
switch(e.InitParams["InitPage"])
{
case "ConfrimBox":
this.RootVisual = new ConfrimBox();
return;
default :
this.RootVisual = new ConfrimBox();
return;
}
}
여기서 index.aspx 코드는 다음과 같습니다.
<div id="silverlightControlHost">
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2"
width="100%" height="100%">
<param name="source" value="ClientBin/SecondTest.xap" />
<param name="InitParams" value="InitPage=ConfirmBox" /> <param name="onError" value="onSilverlightError" />
<param name="background" value="white" />
<param name="minRuntimeVersion" value="5.0.61118.0" />
<param name="autoUpgrade" value="true" />
<a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=5.0.61118.0" style="text-decoration: none">
<img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight"
style="border-style: none" />
</a>
</object>
<iframe id="_sl_historyFrame" style="visibility: hidden; height: 0px; width: 0px;
border: 0px"></iframe>
</div>
빨간색으로 표시된 줄 코드를 보십시오. 이 줄 코드에param 매개 변수인InitParams가 지정되어 있고 키는 'InitPage',value는' ConfrimBox'입니다. 이때ApplicationStartup 함수의 코드는InitParams 인자가 있는지 판단에 따라 그 value 값에 따라 해당하는 User Control을 엽니다.
방법2: 첫 번째 방식에서 우리는 폐단을 발견했다. 실제 프로젝트에서 switch를 이렇게 쓸 수 없다. 그러면 죽지도 않는다. 그래서 우리는 반사를 생각했다. 코드는 다음과 같다.
//
//---------------------------- 1--------------------------------------//
//Assembly assembly = Assembly.GetExecutingAssembly();
//string rootName = string.Format("SecondTest.{0}", e.InitParams["InitPage"]);
//UIElement rootVisual = assembly.CreateInstance(rootName) as UIElement;
//this.RootVisual = rootVisual;
//--------------------------------- 2----------------------------------//
String rootName = String.Format("SecondTest.{0}", e.InitParams["InitPage"]);
Type type = Type.GetType(rootName);
UIElement rootVisual = Activator.CreateInstance(type) as UIElement;
this.RootVisual = rootVisual;
이렇게 하면 우리의 요구를 실현할 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Silverlight animation performanceAnimation performance can be improved with several configurations: Desired Frame Rate Configure in the WEB project: Hard...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.