自定义SilverLight控件并调用

王朝学院·作者佚名  2010-08-19
窄屏简体版  字體: 小  |  中  |  大  |  超大  

1.在aspx页面中切换调用同一个SilverLight项目中的不同用户控件

1.1. 方法一

修改SilverLight项目启动文件App.xml的application_Startup事件

view sourcePRint?01 private void Application_Startup(object sender, StartupEventArgs e)

02

03 {

04

05 if (!e.InitParams.ContainsKey("InitPage"))

06

07 {

08

09 this.RootVisual = new MainPage();

10

11 return;

12

13 }

14

15 switch (e.InitParams["InitPage"])

16

17 {

18

19 case "SilverlightControl1":

20

21 this.RootVisual = new SilverlightControl1();

22

23 break;

24

25 case "SilverlightControl2":

26

27 this.RootVisual = new SilverlightControl2();

28

29 break;

30

31 default:

32

33 this.RootVisual = new MainPage();

34

35 break;

36

37 }

38

39

40

41 }

修改aspx页面

view sourceprint?01 <div id="silverlightControlHost">

02

03 <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%" >

04

05 <param name="source" value="ClientBin/Binglang.SilverlightDemo19.xap"/>

06

07 <param name="InitParams" value="InitPage=SilverlightControl1" />

08

09 <param name="onerror" value="onSilverlightError" />

10

11 <param name="background" value="white" />

12

13 <param name="minRuntimeVersion" value="3.0.40624.0" />

14

15 <param name="autoUpgrade" value="true" />

16

17 <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40624.0" style="text-decoration: none;">

18

19 <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="获取 Microsoft Silverlight" style="border-style: none"/>

20

21 </a>

22

23 </object><iframe id="_sl_historyFrame" style='visibility:hidden;height:0;width:0;border:0px'></iframe></div>

1.2. 方法二

修改SilverLight项目启动文件App.xml的Application_Startup事件

view sourceprint?01 private void Application_Startup(object sender, StartupEventArgs e)

02

03 {

04

05 if (!e.InitParams.ContainsKey("InitPage"))

06

07 {

08

09 this.RootVisual = new MainPage();

10

11 return;

12

13 }

14

15

16

17 Assembly assembly = Assembly.GetExecutingAssembly();

18

19 String rootName = String.Format("Binglang.SilverlightDemo19.{0}", e.InitParams["InitPage"]);

20

21 UIElement rootVisual = assembly.CreateInstance(rootName) as UIElement;

22

23 this.RootVisual = rootVisual;

24

25

26

27 }

以上反射取得所需控件,也可以用下面反射代码:

view sourceprint?1 String rootName = String.Format("Binglang.SilverlightDemo19.{0}", e.InitParams["InitPage"]);

view sourceprint?1 Type type = Type.GetType(rootName );

2 UIElement rootVisual = Activator.CreateInstance(type) as UIElement;

3

4 this.RootVisual = (UIElement)this._contentPage;

修改aspx页面

view sourceprint?01 <div id="silverlightControlHost">

02

03 <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%" >

04

05 <param name="source" value="ClientBin/Binglang.SilverlightDemo19.xap"/>

06

07 <param name="InitParams" value="InitPage=SilverlightControl1" />

08

09 <param name="onerror" value="onSilverlightError" />

10

11 <param name="background" value="white" />

12

13 <param name="minRuntimeVersion" value="3.0.40624.0" />

14

15 <param name="autoUpgrade" value="true" />

16

17 <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40624.0" style="text-decoration: none;">

18

19 <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="获取 Microsoft Silverlight" style="border-style: none"/>

20

21 </a>

22

23 </object><iframe id="_sl_historyFrame" style='visibility:hidden;height:0;width:0;border:0px'></iframe></div>

2.调用不同SilverLight项目中的指定控件

2.1.建立项目

(1)Binglang.SilverlightDemo20

(2)Binglang.SilverlightDemo20.Web

(3) Binglang.ExternalProject

注意:项目Binglang.SilverlightDemo20中需要引用using System.Xml.Linq;

假设(1)和(3)中各有一个控件,名称都为MainPage.xaml (不一定要相同)

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航