av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

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

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

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

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

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

 
 
 
  1. ///  
  2. /// 設(shè)置Uri的依賴屬性,并且定義Uri改變時事件SourceUriChanged  
  3. ///  
  4. public static readonly DependencyProperty SourceUriProperty =  
  5. DependencyProperty.Register("SourceUri", typeof(Uri), typeof(HTMLControl),  
  6. new PropertyMetadata(null, new PropertyChangedCallback(HTMLControl.SourceUriChanged)));  
  7.     
  8. ///  
  9. /// 指定顯示的Uri  
  10. ///  
  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.  } 

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

1.獲取Sl所屬頁面在頁面中增加一個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模式下使用,因為在OOB模式下無法創(chuàng)建Div,HtmlPage等對象訪問也會報錯(題外話:真不明白為啥默認建的SL項目App.xaml.cs中會用到HtmlPage對象)。所以要在OOB運行的時候朋友們可以使用MS的WebBrowser控件。


當前名稱:Silverlight開發(fā)之偷拿別人HTML控件
轉(zhuǎn)載來于:http://uogjgqi.cn/article/dpgsses.html
掃二維碼與項目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流