千家信息网

Silverlight怎么用

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,小编给大家分享一下Silverlight怎么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!现在我们需要的是是在非OOB下的HTML控件,并且支持中文输入无需设置windowsles
千家信息网最后更新 2026年11月03日Silverlight怎么用

小编给大家分享一下Silverlight怎么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

现在我们需要的是是在非OOB下的HTML控件,并且支持中文输入无需设置windowsless等于true。

好吧下面我们开始吧:去年的在深蓝色右手群里有位叫"超人"的哥们说DIV的方式,Silverlihgt在html中作为插件显示。我们可以在html中建立一个DIV 覆盖在Silverlight的上方。这样我们就能输入中文了。今天我们这里也是这样的方式实现的。

以下代码是去年从某地反编译过来,然后稍作修改的。具体哪里也忘了。下面我们简单分析下代码:

我们先定义Uri属性,指定显示某个Uri的html

///  /// 设置Uri的依赖属性,并且定义Uri改变时事件SourceUriChanged  ///  public static readonly DependencyProperty SourceUriProperty =  DependencyProperty.Register("SourceUri", typeof(Uri), typeof(HTMLControl),  new PropertyMetadata(null, new PropertyChangedCallback(HTMLControl.SourceUriChanged)));      ///  /// 指定显示的Uri  ///   public Uri SourceUri   {      get     {          return (Uri)base.GetValue(SourceUriProperty);        }     set      {          base.SetValue(SourceUriProperty, value);      }   }

下面是当Uri改变时候触发的事件,大致原理为:

1.获取Sl所属页面在页面中增加一个Div元素

2.调整Div元素所处位置以及长宽高。让它刚好处于Sl控件位置

3.Refresh方法主要调整位置以及长宽高

private static void SourceUriChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)     {               ((HTMLControl)sender).ReloadUri();          }           private void ReloadUri()           {              if (!HtmlPage.IsEnabled)              {                   return;               }               if (!this.isLoad)              {                   return;               }             if (this.div.Children.Count > 0)               {                   while (div.Children.Count>0)                  {                       this.div.RemoveChild((HtmlElement)this.div.Children[0]);                  }               }                 if (this.SourceUri == null)              {                   //直接设置SourceHtml 未设置Uri                    this.div.SetStyleAttribute("overflow", "auto");                   this.SetDivHtml(this.div, this.SourceHtml);                   //这里刷新Html,并且创建Div                   this.Refresh();               }               else               {                   //通过URL设置                   this.div.SetStyleAttribute("overflow", "hidden");                  this.div.AppendChild(this.IFrame);                   this.IFrame.SetAttribute("src", this.SourceUri.ToString());                   //这里刷新Html                    this.Refresh();                                   }           }

上面控件只能在非OOB模式下使用,因为在OOB模式下无法创建Div,HtmlPage等对象访问也会报错(题外话:真不明白为啥默认建的SL项目App.xaml.cs中会用到HtmlPage对象)。所以要在OOB运行的时候朋友们可以使用MS的WebBrowser控件。

看完了这篇文章,相信你对"Silverlight怎么用"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

控件 位置 事件 代码 元素 对象 属性 方式 时候 模式 篇文章 页面 中文 调整 输入 原理 右手 哥们 完了 所属 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网与科技 北京禾田雨橡互联网科技 互联网科技logo设计 互联网科技博客 天扬科技互联网广告 昭通云南众福互联网科技有限公司 银川新华互联网科技职业技术培训学校图片 常德市电业局互联网科技部 顶级互联网科技成果有哪些 重庆威客帮互联网科技 互联网科技与管理 互联网为啥属于高科技 杭州壁岐互联网科技有限公司 青海科技产业互联网发展 企晟互联网信息科技有限公司 互联网数据科技专业 工业互联网展湾科技股份有限公司 上海钢联属于互联网科技股吗 广东鹅鹅鹅互联网科技有限公司 互联网 科技节活动 微视频大赛 卓越科技(互联网 ) 成都狮子座互联网科技 上海亿帐通互联网科技 互联网科技股有哪些 太原新华互联网科技学校怎么样 深圳互联网科技的发展 广州百诚互联网科技有限公司官网 互联网科技股为什么大涨 湖北辰鑫科技互联网 版纳互联网科技选哪家
0