把XAML放在服務端,即改即現…..

來源:互聯網
上載者:User

好晚了  都睡了把 呵呵....  偷偷寫部落格玩  呵呵.....

先玩玩上面這個Silverlight的東西

      首先看到上面的這個介面,把下面的代碼

  

<UserControlxmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:ed="http://schemas.microsoft.com/expression/2010/drawing"Width="640" Height="480"><Grid x:Name="LayoutRoot" Background="White"><ed:BlockArrow Fill="#FFF4F4F5" HorizontalAlignment="Left" Height="50" Margin="112,48,0,0" Orientation="Right" Stroke="Black" UseLayoutRounding="False" VerticalAlignment="Top" Width="100"/><ed:Callout AnchorPoint="0,1.25" CalloutStyle="Oval" Content="Callout" Fill="#FFF4F4F5" FontSize="14.666999816894531" Height="100" Margin="248,48,192,0" Stroke="Black" VerticalAlignment="Top"/><ed:RegularPolygon Fill="#FFF4F4F5" HorizontalAlignment="Left" Height="100" InnerRadius="0.47211" Margin="64,0,0,116" PointCount="5" Stretch="Fill" Stroke="Black" UseLayoutRounding="False" VerticalAlignment="Bottom" Width="100"/></Grid></UserControl>

  複製到上面的文字框裡,然後點擊“顯示介面按鈕”.......   呵呵,沒錯,介面就顯示了。

     ........。

     不過更好玩的事情是,任意你給一份XAML,只要符合一下三個條件,把XAML複製到文字框裡,然後點擊顯示介面按鈕,都能顯示該介面。

 1:XAML格式良好,根為Page或者UserControl。

 2:沒有x:Class..  這個

 3:注意你的XAML沒有引用第三方的類庫。

 .....  沒錯,你任意放修改XAML,然後點擊按鈕,就會顯示介面。

 

 

原始碼如下.....    因為代碼實在太簡單,就不往包裡整了。

下面是按鈕點擊的代碼。

private void button1_Click(object sender, RoutedEventArgs e)        {            string xaml = textBox1.Text;            try            {                UserControl uc = System.Windows.Markup.XamlReader.Load(xaml) as UserControl;                ChildWindow c = new ChildWindow();                c.Content = uc;                c.Show();            }            catch (Exception ee)            {                MessageBox.Show(ee.Message);            }        }

  哈哈.....  代碼好簡單啊.....。

     

 我的目標:即改即現。

      在我們實際的開發中,我們的XAML哪怕只做了一個非常小的更改,我們想看看效果,都必須經過編譯階段。XAML必須重新打包近XAP。隨著項目越來越大,編譯和打包的時間也會越來越長。當項目比較大的時候,我們哪怕做一個非常小的功能的更改,都必須要整個重建一個新的XAP包。

      而即改即現的意思,就是改了之後,不要編譯,馬上就能看到效果。

      比如上面的小例子,幾行代碼實現了一個簡單版本的”即改即現“。你把XAML做任意的合格改動,點擊一下按鈕,效果即可出來。

      當然上面那個東西不能實際做項目用,實際的項目開發當中,我們的Xaml當然不能在那個小小的文字框裡編輯,最好用Blend編輯。(在這插句題外話....  有朋友覺得學習Silverlight可以不用Blend,這絕對錯誤的觀念。)

      所以,如果能用Blend編輯XAML,並且能點個按鈕,0.5秒內看到改的效果,我想那一定是件爽事。

 

 上代碼了呵呵

      沒錯,上面我所說的,用Blend編輯,改完了點一下直接看的代碼....    如下。

    http://files.cnblogs.com/MySilverlight/demo2.xap

    

 代碼說明:

      1:在你開啟這份代碼之後,注意找到  ......\demo2\SilverlightApplication2.web\ClientBin\MyXaml\XamlShow   這個目錄。這個目錄下你會找到一個解決方案,請用Blend開啟它。

      2:開啟之後  ,找到三個可以即改即現的XAML。先 開啟UserControl1.xaml

       

 

3:開啟  SilverlightApplication2.sln,用VS開啟。然後瀏覽Default.aspx頁面。或者乾脆按F5,你會看到如下介面  

   

 

點擊顯示介面按鈕,你會看到UserControl1的XAML載入後的介面。呵呵 是不是和Blend裡一模一樣?? 

沒錯,這事即改即現的.

你可以把這個UserControl1改為 UserControl2 或者 UserControl3.並且這三個檔案都是即改即現的。注意Blend裡編輯完之後要按Ctrl+s儲存一下。

  後話

   這樣對待我們的XAML,是不是感覺方便很多??當然,如果這種方式只能給我們改改XAML,只能當遊戲玩玩,那我這文章也沒啥價值了....     如果在實際的開發中,真把XAML像這樣放在服務端.....

   你會問,這樣把XAML放在服務端,那資源字典(樣式檔案)怎麼半呢?   圖片的載入怎麼辦呢?   在Blend裡能顯示圖片,這個用這種機制還能顯示嗎??要引用第三方DLL咋辦?? 這裡的路徑只有一個Test檔案夾,可如果Test檔案夾下有多個目錄怎麼半???

   不過我知道,這裡最大的難題,是....    CS檔案怎麼辦?   要知道一個XAML,在我們之前的開發中,都要對應一個CS檔案的。即便是用MVVM,這個頁面也要有相應的CS代碼與之對應......     

    呵呵,沒錯這些問題.....  我都解決了.....      

   預知後事如何,且聽下回分解。

 

 

 

 

 

            

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.