2009年7月28日星期二

讀者 slimsoho 的問題與回答

問題:

我是 ASP.NET & Silverlight (for VB) 的開發人員, 昨日迫不急待買了一本老師的書, 配合老師在演講時強調的觀念, 仔細聽完 LearningVideo 1, 重覆實作一遍, 發現只要掌握好 Series, ChartAreas, Legends, Titles, Annotations 的架構觀念, Chart Control 還滿靈活及有彈性,將陸續再專研 Chapter 02~09.
由老師的 "Silverlight 2.0 精華技術手冊-使用VB" 一書各章節務實的案例, 我已可開發出自己的需求. 但我對設計 Silverlight Chart 需求很極迫 (尤其在 Stock Chart 方面), 上次聽了老師的一場演講, 老師比較偏好 ASP.NET Chart, 感覺 Silverlight Chart 比 ASP.NET Chart 完整性有一段落差. 現在Silverlight 3.0 及 Expression Blend 3.0 已上市, 請問老師 號稱 RIA 的 Silverlight Chart Control 真的比 ASP.NET Chart Control 功能差嗎? 兩者對 Chart Control 圖表架構觀念及property name 是否一樣? Silverlight 3. 加了許多功能, 又是一番面貌, 期待老師再出版一本 Silverlight 3., 當然希望有完整 Silverligt Chart COntrol 功能? 順便請問老師 third party 是否有比較好的 Silverlight Chart 產品? 問了許多問題,麻煩老師了.

回答:

就目前這個階段看來,雖然 Silverlight 3.0 大幅提升了不少功能,然而在 Chart 控制項方面,確實與 ASP.NET 3.5 Chart 控制項仍然有不少的落差。ASP.NET 3.5 Chart控制項提供完整的圖表類型,物件架構與相關功能也非常完善,不過若與 Silverlight 相比較,ASP.NET 畢竟是伺服器端為主的開發模式,其 Chart 控制項最終所產生的圖表其實是一個圖片,因此在用戶端的互動操作方面,只能透過影像地圖與 JavaScript 來完成,這是其最大缺憾。

回到 Silverilght 的 Chart 控制項,雖然圖表類型不多,但是其最大優勢,就是執行於用戶端電腦,圖表中的每一個項目都是一個獨立的物件,因此可實作出高度的互動性。我相信,Silverlight 的 Chart 控制項目前是處於早期階段,未來必定會持續強化。如果您覺得既有的 Chart 控制項不夠,可考慮先自行開發,或是尋找一些協力廠商的產品。至於有哪些協力廠商的產品,請參考以下的連結:

http://demo.softwarefx.com/Silverlight/Chart/Galleries/
http://www.componentone.com/SuperProducts/ChartSilverlight/
http://www.infragistics.com/dotnet/netadvantage/silverlight/xam-web-chart.aspx#Overview

章立民研究室

4 意見:

  1. 章老師:
    我是VB的使用者,而且使用EXCEL VBA,一直都是在Microsoft平台,未花時間在C++及C#。最近感覺C#的使用文章及書籍逐漸較VB為多,而且先出版(例如老師出版的書,雖然時間差距很短)。我有點想改以寫C#為主,但又考慮到經常要寫EXCEL VBA 及 Macro,又必須用到VB。請老師提供一些建議,MS一直在改變,EXCEL的Macro一定要用VB,不能用C#嗎?
    回覆刪除
  2. 章老師:
    老師在"Silverlight 2.0 精華技術手冊" 第15章-如何存取遠端主機資源-, 提及存取跨網域資源必須於被存取網域的Server內建立正確的跨網域原則檔. 請問在沒有跨網域原則檔情形下,Silverlight是否能取得其它網站的特定網頁原始碼?
    回覆刪除
  3. 章老師您好,我是siliver light 2.0 精華技術手冊,使用VC#的讀者.

    根據您的書我嘗試寫了一個相簿播放的特效,

    但是在滑鼠左鍵點擊放大出了問題,

    程式碼中應先執行zoomout縮回,在接著執行zoomin放大,

    但是在測試時,只有zoomin的動作,而zoomout沒有執行.

    後來更進一步發現,我整個.cs的檔案,只要是一個程式碼片段中連續執行兩個以上的腳本的話,

    都只有位於這個程式碼區塊中的最後一個腳本會動作,

    如果我故意把位在較後面的腳本注解,則前一個腳本又會正常執行.

    請問章老師我的錯誤在哪呢?

    因為其他特效並不會出現不能連續執行兩個腳本的問題,

    麻煩請您解惑,打擾了真的很不好意思.

    以下有部份程式碼:

    if (z != 0)
    {
    namestring = "zoomout1";
    ((Storyboard)this.FindName(namestring)).Begin();

    r = Convert.ToInt32(name) + n * 4 - 1;
    if (r == 0)
    {
    u = 1;
    }
    else
    {
    u = 0;
    }


    ImageBrush photobrush = new ImageBrush();
    photobrush.ImageSource = new BitmapImage(new Uri(this.PhotoPath.ElementAt(r).PhotoUrl, UriKind.Absolute));
    clickphoto.Fill = photobrush;

    z = 1;
    namestring = "zoomin1";
    ((Storyboard)this.FindName(namestring)).Begin();

    cc = 1;


    }

    此段程式碼在呈現時,只會有在後面zoomin1的效果,而zoomout1並不會有動作.

    若是把zoomin1那段註解,則zoomout1就有動作了,麻煩您了,謝謝.
    回覆刪除
  4. 章老師您好~我讀到"用實力學asp.net"那本書有個問題在P11-101,範例是"如何根據欄位內容設定資料列顏色",我用是ok的~不過我不想整列都有顏色,我只想只有一格不一樣就那格顯示顏色,可以做得到嗎??謝謝!!
    回覆刪除