新聞中心
Silverlight為開發(fā)人員提供了一個(gè)強(qiáng)大的開發(fā)平臺(tái),可以幫助開發(fā)人員開發(fā)出各種多媒體相關(guān)程序。不過在實(shí)際使用中,同樣也會(huì)出現(xiàn)一些不可避免的錯(cuò)誤問題。下面我們就來一起分析一下有關(guān)Silverlight問題的相關(guān)解決方案。#t#

Silverlight問題1.namespace問題
一開始還不知道是這個(gè)問題,為什么我的XamlReader.Load出來的控件,我再FindName為什么找不到了?這個(gè)對(duì)我很關(guān)鍵,因?yàn)槲宜械臇|西都是動(dòng)態(tài)生成的,找不到了豈不是完蛋了,搜索啊搜索啊,發(fā)現(xiàn)做程序的還是得去國外論壇,隨著一番討論,終于找到了問題,namespace,不過為啥這樣,還是沒搞清楚,但是解決辦法找到了,很BT的一個(gè)方法
- string newxmlRoot = "< Canvas xmlns=
'http://schemas.microsoft.com/winfx/
2006/xaml/presentation'>" + str +
"< /Canvas>";- Canvas root = (Canvas)Xaml
Reader.Load(newxmlRoot);- UIElement realRoot = root.Children[0];
- root.Children.Remove(realRoot);
- _PageTurnCanvas.Children.Add(realRoot);
先生成一個(gè),然后再移除掉,然后再添加,就不存在namespace問題了,findname也沒有任何問題了,很BT吧。
Silverlight問題2.WebRequest異步問題
在以前的版本,異步的程序中是可以訪問頁面控件的,但是beta2已經(jīng)和.net的線程一樣了,子線程是不允許訪問頁面元素的,而且使用主線程等待的方式System.Threading.ManualResetEvent也是不可以的,程序會(huì)死在主線程等待的地方。
那怎么辦呢?訪問完數(shù)據(jù)總要在界面上顯示出來瓦,因此,只好又想了一個(gè)比較猥瑣的方法,用一個(gè)storyboard解決了,在啟動(dòng)異步的時(shí)候設(shè)一個(gè)bool變量為false,storyboard啟動(dòng),然后在storyboard completed事件中不停的檢測bool變量,如果還是false則storyboard繼續(xù)begin,子線程數(shù)據(jù)讀取完畢后,將bool變量置為true,storyboard completed事件中發(fā)現(xiàn)bool變量為true了,知道子線程數(shù)據(jù)讀取完畢,則storyboard stop,更新頁面元素,這樣就繼續(xù)可以使用WebRequest方法了,雖然效率犧牲了很多,但是還沒想出其它辦法前,只能現(xiàn)這么著了。
Silverlight問題3.屬性設(shè)置方面(列舉一些吧,比較多)
- StarImg5.SetValue(Canvas.Left
Property, Convert.ToDouble(52));- StarImg5.SetValue(Canvas.TopProperty,
Convert.ToDouble(0));- PointCollection _oddClipmyPoint
Collection = new PointCollection();- Point _oddClipPoint1 = new Point(0, p2y);
- Point _oddClipPoint2 = new Point(p3x, 0);
- this._oddClipRegionLineSegment1.
SetValue(LineSegment.Point
Property, _oddClipPoint1);- this._oddClipRegionLineSegment2.
SetValue(LineSegment.Point
Property, _oddClipPoint2);
其它Silverlight問題就不列舉了,屬性的檢查比以前嚴(yán)格了許多,強(qiáng)制要求變量的類型符合要求。
網(wǎng)站名稱:實(shí)踐解決Silverlight問題經(jīng)驗(yàn)分享
標(biāo)題URL:http://www.dlmjj.cn/article/dhisodh.html


咨詢
建站咨詢
