SilverLight aspx 페이지에서 사용자 정의 컨트롤 호출

8476 단어 silverlight
서로 다른 aspx 페이지에서 서로 다른usercontrol 컨트롤을 호출하고 App.를 수정해야 합니다xaml.cs에서 ApplicationSilverlight에서 xaml 파일을 호출하기 때문에 Startup 함수의 코드입니다.
메서드 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;

이렇게 하면 우리의 요구를 실현할 수 있다.
 
 

좋은 웹페이지 즐겨찾기