自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Silverlight開發(fā)之偷拿別人HTML控件

開發(fā) 后端 前端
需求:大家都現(xiàn)有MS提供的HTML控件只能在OOB模式下使用,而第三方的控件如要在非OOB下使用則需設(shè)置windowsless等于true,我們知道windowsless等于true對性能是有影響的,還有個(gè)特大的bug就是不能輸入中文。

現(xiàn)在我們需要的是是在非OOB下的HTML控件,并且支持中文輸入無需設(shè)置windowsless等于true。

好吧下面我們開始吧:去年的在深藍(lán)色右手群里有位叫“超人”的哥們說DIV的方式,Silverlihgt在html中作為插件顯示。我們可以在html中建立一個(gè)DIV 覆蓋在Silverlight的上方。這樣我們就能輸入中文了。今天我們這里也是這樣的方式實(shí)現(xiàn)的。

以下代碼是去年從某地反編譯過來,然后稍作修改的。具體哪里也忘了。下面我們簡單分析下代碼:

我們先定義Uri屬性,指定顯示某個(gè)Uri的html

  1. /// <summary> 
  2. /// 設(shè)置Uri的依賴屬性,并且定義Uri改變時(shí)事件SourceUriChanged  
  3. /// </summary> 
  4. public static readonly DependencyProperty SourceUriProperty =  
  5. DependencyProperty.Register("SourceUri", typeof(Uri), typeof(HTMLControl),  
  6. new PropertyMetadata(null, new PropertyChangedCallback(HTMLControl.SourceUriChanged)));  
  7.     
  8. /// <summary> 
  9. /// 指定顯示的Uri  
  10. /// </summary> 
  11.  public Uri SourceUri  
  12.  {  
  13.     get  
  14.    {  
  15.         return (Uri)base.GetValue(SourceUriProperty);  
  16.       }  
  17.    set  
  18.     {  
  19.         base.SetValue(SourceUriProperty, value);  
  20.     }  
  21.  } 

下面是當(dāng)Uri改變時(shí)候觸發(fā)的事件,大致原理為:

1.獲取Sl所屬頁面在頁面中增加一個(gè)Div元素

2.調(diào)整Div元素所處位置以及長寬高。讓它剛好處于Sl控件位置

3.Refresh方法主要調(diào)整位置以及長寬高

  1. private static void SourceUriChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)  
  2.    {  
  3.              ((HTMLControl)sender).ReloadUri();  
  4.         }  
  5.          private void ReloadUri()  
  6.          {  
  7.             if (!HtmlPage.IsEnabled)  
  8.             {  
  9.                  return;  
  10.              }  
  11.              if (!this.isLoad)  
  12.             {  
  13.                  return;  
  14.              }  
  15.            if (this.div.Children.Count > 0)  
  16.              {  
  17.                  while (div.Children.Count>0)  
  18.                 {  
  19.                      this.div.RemoveChild((HtmlElement)this.div.Children[0]);  
  20.                 }  
  21.              }  
  22.    
  23.             if (this.SourceUri == null)  
  24.             {  
  25.                  //直接設(shè)置SourceHtml 未設(shè)置Uri  
  26.                   this.div.SetStyleAttribute("overflow", "auto");  
  27.                  this.SetDivHtml(this.div, this.SourceHtml);  
  28.                  //這里刷新Html,并且創(chuàng)建Div  
  29.                  this.Refresh();  
  30.              }  
  31.              else  
  32.              {  
  33.                  //通過URL設(shè)置  
  34.                  this.div.SetStyleAttribute("overflow", "hidden");  
  35.                 this.div.AppendChild(this.IFrame);  
  36.                  this.IFrame.SetAttribute("src", this.SourceUri.ToString());  
  37.                  //這里刷新Html  
  38.                   this.Refresh();  
  39.                      
  40.             }  
  41.          } 

上面控件只能在非OOB模式下使用,因?yàn)樵贠OB模式下無法創(chuàng)建Div,HtmlPage等對象訪問也會報(bào)錯(題外話:真不明白為啥默認(rèn)建的SL項(xiàng)目App.xaml.cs中會用到HtmlPage對象)。所以要在OOB運(yùn)行的時(shí)候朋友們可以使用MS的WebBrowser控件。

原文鏈接:http://www.cnblogs.com/ForrestZhang/archive/2011/03/08/SilverlightHtml.html

【編輯推薦】

  1. 你可能不知道的15個(gè)Silverlight訣竅
  2. Silverlight 之輕
  3. Silverlight 之重
  4. 在Silverlight應(yīng)用程序中調(diào)試WCF服務(wù)
責(zé)任編輯:陳貽新 來源: Mr.Wrong博客
相關(guān)推薦

2012-02-02 16:37:51

Silverlight常用控件

2009-12-30 13:30:16

Silverlight

2011-01-26 09:50:18

Silverlight.NetJavaScript

2011-01-27 08:49:47

SilverlightWeb.NET

2010-01-04 14:49:30

Silverlight

2009-12-30 13:51:43

Silverlight

2009-08-03 15:43:22

asp.net控件

2011-08-24 09:29:00

Silverlight

2009-12-30 17:29:53

Silverlight

2009-12-30 16:43:47

Silverlight

2009-08-14 10:14:07

Silverlight

2009-12-31 16:44:53

Silverlight

2009-12-30 13:59:58

Silverlight

2009-12-30 11:16:36

Silverlight

2010-08-06 15:44:28

Windows PhoWindows PhoSilverlight

2009-08-07 14:05:21

ASP.NET控件

2012-02-02 16:32:23

Silverlight控件模型分類

2009-12-30 14:10:27

Silverlight

2009-12-31 11:15:57

Silverlight

2014-10-22 10:46:03

ViewportHTML
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號