日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Silverlight開(kāi)發(fā)之偷拿別人HTML控件

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

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

以下代碼是去年從某地反編譯過(guò)來(lái),然后稍作修改的。具體哪里也忘了。下面我們簡(jiǎn)單分析下代碼:

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

 
 
 
  1. ///  
  2. /// 設(shè)置Uri的依賴屬性,并且定義Uri改變時(shí)事件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.  } 

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

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

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

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

 
 
 
  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.                  //通過(guò)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模式下無(wú)法創(chuàng)建Div,HtmlPage等對(duì)象訪問(wèn)也會(huì)報(bào)錯(cuò)(題外話:真不明白為啥默認(rèn)建的SL項(xiàng)目App.xaml.cs中會(huì)用到HtmlPage對(duì)象)。所以要在OOB運(yùn)行的時(shí)候朋友們可以使用MS的WebBrowser控件。


標(biāo)題名稱:Silverlight開(kāi)發(fā)之偷拿別人HTML控件
鏈接URL:http://www.dlmjj.cn/article/dpgsses.html