新聞中心
本文將介紹的是Silverlight 3.0窗體跳轉(zhuǎn)的實(shí)現(xiàn),在基本原理上和ASP.NET類似。微軟在Silverlight上投入了大力氣,還是希望能從Adobe手中搶占一定的份額。

目前創(chuàng)新互聯(lián)建站已為上1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、網(wǎng)站運(yùn)營(yíng)、企業(yè)網(wǎng)站設(shè)計(jì)、鹽津網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
閱讀條件:本篇文章適合Silverlight的初學(xué)者閱讀,如果你不是初者請(qǐng)你放棄閱讀;不文不將對(duì)Silverlight的高級(jí)開(kāi)發(fā)者提供認(rèn)何幫助;
我們?nèi)绾文馨裇ilverlight利用像熟練呢?就像寫(xiě)Web應(yīng)用程序一樣呢?
其實(shí)這個(gè)問(wèn)題也很簡(jiǎn)單,只要在平時(shí)多關(guān)心Silverlight,了解Silverlight就可以了,如果你對(duì)它很陌生,那么它也對(duì)你一樣的陌生,這兩者是成正比的;
今天我就給大家講一下在Silverlight 3.0是關(guān)于Redirect頁(yè)面的跳轉(zhuǎn),與ASP.NET頁(yè)面的跳轉(zhuǎn)一樣;
案例:現(xiàn)在有一個(gè)登陸窗口,如果用戶登陸成功以后成功頁(yè)面,沒(méi)有成功就到原始頁(yè)面;如果沒(méi)有登陸提示用戶去登陸;這樣一個(gè)需求在ASP.NET 很好解決,
但是在Siverlight API 文檔 中目前還沒(méi)有提供寫(xiě)好的方法來(lái)解決這個(gè)問(wèn)題;這個(gè)問(wèn)題其實(shí)也不算很難,通過(guò)看Silverlight API 也可以找到解決方案;接下來(lái)
我就為大家提供兩種方案來(lái)解決Silverlight窗體跳轉(zhuǎn)這個(gè)問(wèn)題吧;
Silverlight窗體跳轉(zhuǎn)解決方案一:
運(yùn)行效果如下:
我們可以從App.cs文件中來(lái)解決;我們可以在App中定義一個(gè)全局的變量;
1.我們先在App中定義一個(gè)Grid控件;代碼如下所示:
Grid rootGrid = new Grid();2.當(dāng)整個(gè)應(yīng)用程序啟動(dòng)運(yùn)行時(shí),讓它***個(gè)頁(yè)面Login頁(yè)面;在Application Startup事件中來(lái)處理解決,先看一下代碼:
- private void Application_Startup(object sender, StartupEventArgs e)
- {
- this.RootVisual = rootGrid;①
- this.rootGrid.Children.Add(new Login());②
- }
這句代碼是什么意思呢?分析如下:
1.當(dāng)整個(gè)應(yīng)用程序啟動(dòng)時(shí),程序的主界面加載就是Grid;
2.Grid控件加載完成了,那么它的創(chuàng)建也完成,接下我們就可以為它添加一個(gè)子頁(yè)面;
3.登陸時(shí)的主頁(yè)面問(wèn)題就完全解決了,但是登陸成功后我們又怎么來(lái)轉(zhuǎn)向成功后的頁(yè)面呢;我們還是在App.cs里面寫(xiě)一個(gè)方法來(lái)解決,
先看代碼;
- ///
- /// 頁(yè)面跳轉(zhuǎn)
- /// summary>
- /// name="usercontrol"> param>
- public void RedirectTo(UserControl usercontrol)
- {
- App app = (App)Application.Current;①
- app.rootGrid.Children.Clear();②
- app.rootGrid.Children.Add(usercontrol);③
- }
這三句代碼是什么意思呢?分析結(jié)果如下
①.它的意思就是得到當(dāng)應(yīng)用程序的對(duì)象
②.剛才我們不是對(duì)Grid里面添加Login頁(yè)面進(jìn)去了,現(xiàn)在為了添加成功頁(yè)面進(jìn)去,我們必須把Grid控件中的Login清除掉;
③.這上操作是建立在②的基礎(chǔ)之上的,沒(méi)有它的Clear就不能添加;所以這一步就是在添加新頁(yè)面;
我們?cè)趺磥?lái)調(diào)用③這個(gè)方法呢?不難看出③這個(gè)方面的參數(shù)類型是UserControl,是一個(gè)控件;在調(diào)用它時(shí)我們傳一個(gè)就是一個(gè)頁(yè)面; App app = (App)Application.Current;
- app.curUserName = txtUserName.Text.Trim();
- app.RedirectTo(new MainPage());
關(guān)于App文件的介紹我在這里就不介紹了,可以在他里面可以定義全局變得,比如:可以定義一個(gè)變量來(lái)判斷是否是登陸用戶,這些都可以來(lái)做到的;
每一個(gè)解決方案就介紹到這里;
Silverlight窗體跳轉(zhuǎn)解決方案二:
在方案二中與方案一有很多的相似的地方,我就簡(jiǎn)單的介紹一下;
1.當(dāng)應(yīng)用程序運(yùn)行起來(lái)時(shí),向加載成功的頁(yè)面,在加載成功頁(yè)面的同時(shí)我們?cè)谒腖oaded事件中執(zhí)行一個(gè)模態(tài)窗體(Login);代碼如下:
- Login s = new Login();
- s.Show();
如果登陸成功就回到主頁(yè)面了;2.如果在這里我們不用模態(tài)窗體用普通的一個(gè)頁(yè)面,如何解決呢?普通頁(yè)面這里也方案一很相似;先得以主頁(yè)面中聲明一個(gè)UserControl這個(gè)對(duì)象;UserControl _userControl;3.在主頁(yè)面的Loaded事件中寫(xiě)如下代碼:
- Login login;
- _userControl = new Login();
- login = _userControl as Login;
- this.ContentHolder.Children.Add(login);
在這里與解決方案一基本上是一樣的;只是換了一個(gè)角度去考慮一;補(bǔ)充解決方案:關(guān)于頁(yè)面的跳轉(zhuǎn)也有很多的解決方案,關(guān)鍵是如何去發(fā)現(xiàn)問(wèn)題?還得靠平時(shí)的積累;在有的資料文檔中還提供一種用委托來(lái)解決,這一種也是一個(gè)不錯(cuò)的解決方案;在這里我就不詳細(xì)說(shuō)了;
標(biāo)題名稱:淺析Silverlight窗體跳轉(zhuǎn)的實(shí)現(xiàn)方案
網(wǎng)站路徑:http://m.fisionsoft.com.cn/article/cdgishc.html


咨詢
建站咨詢
