温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Silverlight怎么用

发布时间:2021-12-03 11:05:25 来源:亿速云 阅读:138 作者:小新 栏目:编程语言

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

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

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

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

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

/// <summary> /// 设置Uri的依赖属性,并且定义Uri改变时事件SourceUriChanged  /// </summary> public static readonly DependencyProperty SourceUriProperty =  DependencyProperty.Register("SourceUri", typeof(Uri), typeof(HTMLControl),  new PropertyMetadata(null, new PropertyChangedCallback(HTMLControl.SourceUriChanged)));      /// <summary> /// 指定显示的Uri  /// </summary>  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怎么用”有了一定的了解,如果想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI