稳扎稳打Silverlight(43) - 4.0控件之Webbrowser,WebbrowserBrush
作者: webabcd
介绍
Silverlight 4.0 控件一览:
Webbrowser - 在 Silverlight 应用程序中显示 HTML 内容(只能在 OOB 模式下运行) WebbrowserBrush - 一个 Webbrowser 类型的画笔(只能在 OOB 模式下运行)
在线DEMO
http://www.cnblogs.com/webabcd/archive/2010/08/09/1795417.html
示例
1、VIEwBox 的 Demo
WebbrowserDemo.xaml
代码 < navigation:Page x:Class ="Silverlight40.Control.WebbrowserDemo"
xmlns ="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x ="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d ="http://schemas.microsoft.com/Expression/blend/2008"
xmlns:mc ="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:navigation ="clr-namespace:System.windows.Controls;assembly=System.windows.Controls.Navigation"
Title ="WebbrowserDemo Page" >
< GrID x:name ="LayoutRoot" >
< StackPanel HorizontalAlignment ="left" >
< button name ="btnOutOfbrowser" Click ="btnOutOfbrowser_Click" />
< button name ="btnSource" Content ="Source 属性" Click ="btnSource_Click" />
< button name ="btnNavigate" Content ="Navigate 方法" Click ="btnNavigate_Click" />
< button name ="btnNavigatetoString" Content ="NavigatetoString 方法" Click ="btnNavigatetoString_Click" />
< button name ="btnScript" Content ="与 Webbrowser 中的脚本交互" Click ="btnScript_Click" />
< Webbrowser name ="webbrowser" WIDth ="400" Height ="300" ScriptNotify ="webbrowser_ScriptNotify" LoadCompleted ="webbrowser_LoadCompleted" />
</ StackPanel >
</ GrID >
</ navigation:Page >
WebbrowserDemo.xaml.cs 代码 /*
* Webbrowser - 在 Silverlight 应用程序中显示 HTML 内容(只能在 OOB 模式下运行)
* Source - 将指定的 URI 中的 HTML 内容显示在 Webbrowser 中
* Navigate() - 加载指定的 URI 中的 HTML 内容到 Webbrowser 中
* NavigatetoString() - 显示指定的 HTML 内容
* SavetoString() - 获取当前 Webbrowser 所显示的 HTML 内容,返回一个字符串类型(不能跨域)
* InvokeScript() - 调用当前 Webbrowser 所加载的 HTML 内容中的 JavaScript 脚本(不能跨域)
* ScriptNotify - 当 Webbrowser 内的 JavaScript 以 “window.external.notify(string);” 的方式发送信息到 Silverlight 程序中时所触发的事件(不能跨域)
* NotifyEventArgs - ScriptNotify 事件的事件参数
* NotifyEventArgs.Value - JavaScript 发送到 Silverlight 程序中的信息。即 “window.external.notify(string);” 中的字符串
*/
using System;
using System.Collections.Generic;
using System.linq;
using System.Net;
using System.windows;
using System.windows.Controls;
using System.windows.documents;
using System.windows.input;
using System.windows.Media;
using System.windows.Media.Animation;
using System.windows.Shapes;
using System.windows.Navigation;
namespace Silverlight40.Control
{
public partial class WebbrowserDemo : Page
{
public WebbrowserDemo()
{
InitializeComponent();
}
protected overrIDe voID OnNavigatedTo(NavigationEventArgs e)
{
if (App.Current.IsRunningOutOfbrowser)
btnOutOfbrowser.Content = " 卸载 " ;
else
btnOutOfbrowser.Content = " 安装 " ;
}
private voID btnOutOfbrowser_Click( object sender, RoutedEventArgs e)
{
if ( ! App.Current.IsRunningOutOfbrowser && App.Current.InstallState == InstallState.notinstalled)
App.Current.Install();
else
MessageBox.Show( " 已经安装,使用右键卸载 " );
}
private voID btnSource_Click( object sender, RoutedEventArgs e)
{
webbrowser.source = new Uri( " http://webabcd.cnblogs.com " );
}
private voID btnNavigate_Click( object sender, RoutedEventArgs e)
{
webbrowser.Navigate( new Uri( " http://www.cnblogs.com/webabcd/archive/2007/02/24/655035.HTML " ));
}
private voID btnNavigatetoString_Click( object sender, RoutedEventArgs e)
{
webbrowser.NavigatetoString( " <div style='color: red'>webabcd</div> " );
}
private voID btnScript_Click( object sender, RoutedEventArgs e)
{
webbrowser.Navigate( new Uri( " http://localhost:9483/Silverlight40TestPage.HTML " ));
}
private voID webbrowser_ScriptNotify( object sender, NotifyEventArgs e)
{
// 获取 Webbrowser 中的 HTML 内所包含的 JavaScript 发给 Silverlight 程序的信息
MessageBox.Show(e.Value);
// 调用 Webbrowser 中的 HTML 内所包含的 JavaScript 函数
MessageBox.Show(( string )webbrowser.InvokeScript( " hello " , " webabcd " ));
}
private voID webbrowser_LoadCompleted( object sender, NavigationEventArgs e)
{
try
{
string HTML = webbrowser.SavetoString();
MessageBox.Show(HTML);
}
catch (System.Security.SecurityException se)
{
MessageBox.Show(se.Message);
}
}
}
}
相关的 JavaScript 部分
Silverlight40TestPage.HTML 代码 < script type = " text/JavaScript " >
// 此函数用于:Silverlight 程序调用 Webbrowser 所加载的 HTML 内容中的 JavaScript 函数
function hello(name) {
return " hello: " + name;
}
// 此方法用于:在 Webbrowser 所加载的 HTML 内容中用 JavaScript 向 Silverlight 程序发送信息
try {
window.external.notify( ' window.external.notify to silverlight ' );
} catch (err) { }
< / script>
2、WebbrowserBrush 的 Demo
WebbrowserBrushDemo.xaml 代码 < navigation:Page x:Class ="Silverlight40.Control.WebbrowserBrushDemo"
xmlns ="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x ="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d ="http://schemas.microsoft.com/Expression/blend/2008"
xmlns:mc ="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:navigation ="clr-namespace:System.windows.Controls;assembly=System.windows.Controls.Navigation"
Title ="WebbrowserBrushDemo Page" >
< GrID x:name ="LayoutRoot" MouseMove ="LayoutRoot_MouseMove" >
< StackPanel HorizontalAlignment ="left" >
< button name ="btnOutOfbrowser" Click ="btnOutOfbrowser_Click" />
< Webbrowser name ="webbrowser" WIDth ="200" Height ="150" Source ="http://webabcd.cnblogs.com" />
<!--
演示在 Rectangle.Fill 中使用 WebbrowserBrush
-->
< Rectangle WIDth ="200" Height ="150" HorizontalAlignment ="left" >
< Rectangle.Fill >
< WebbrowserBrush x:name ="webbrowserBrushRectangle" Sourcename ="webbrowser" Opacity ="0.7" >
< WebbrowserBrush.transform >
< Scaletransform ScaleX ="2" ScaleY ="2" />
</ WebbrowserBrush.transform >
</ WebbrowserBrush >
</ Rectangle.Fill >
</ Rectangle >
<!--
演示在 Canvas.Background 中使用 WebbrowserBrush
-->
< Canvas WIDth ="200" Height ="150" HorizontalAlignment ="left" >
< Canvas.Background >
< WebbrowserBrush x:name ="webbrowserBrushCanvas" Sourcename ="webbrowser" Opacity ="0.7" />
</ Canvas.Background >
< GrID WIDth ="200" Height ="150" >
< TextBlock Text ="我是在 Canvas 里的 TextBlock" HorizontalAlignment ="Center" VerticalAlignment ="Center" />
</ GrID >
</ Canvas >
<!--
演示在 Path.Fill 中使用 WebbrowserBrush
-->
< Path strokeThickness ="10" stroke ="Red" >
< Path.Data >
< EllipseGeometry Center ="100,75" RadiusX ="100" RadiusY ="75" />
</ Path.Data >
< Path.Fill >
< WebbrowserBrush x:name ="webbrowserBrushPath" Sourcename ="webbrowser" Opacity ="0.7" />
</ Path.Fill >
</ Path >
</ StackPanel >
</ GrID >
</ navigation:Page >
WebbrowserBrushDemo.xaml.cs @H_305_1403@ 代码 /*
* WebbrowserBrush - 一个 Webbrowser 类型的画笔(只能在 OOB 模式下运行)
* Sourcename - 为此画笔提供 HTML 内容的 Webbrowser
* Redraw() - 重绘画笔。当 Webbrowser 所加载内容更改时,需要调用此方法
*/
using System;
using System.Collections.Generic;
using System.linq;
using System.Net;
using System.windows;
using System.windows.Controls;
using System.windows.documents;
using System.windows.input;
using System.windows.Media;
using System.windows.Media.Animation;
using System.windows.Shapes;
using System.windows.Navigation;
namespace Silverlight40.Control
{
public partial class WebbrowserBrushDemo : Page
{
public WebbrowserBrushDemo()
{
InitializeComponent();
}
protected overrIDe voID OnNavigatedTo(NavigationEventArgs e)
{
if (App.Current.IsRunningOutOfbrowser)
btnOutOfbrowser.Content = " 卸载 " ;
else
btnOutOfbrowser.Content = " 安装 " ;
}
private voID btnOutOfbrowser_Click( object sender, RoutedEventArgs e)
{
if ( ! App.Current.IsRunningOutOfbrowser && App.Current.InstallState == InstallState.notinstalled)
App.Current.Install();
else
MessageBox.Show( " 已经安装,使用右键卸载 " );
}
private voID LayoutRoot_MouseMove( object sender, MouseEventArgs e)
{
webbrowserBrushRectangle.Redraw();
webbrowserBrushCanvas.Redraw();
webbrowserBrushPath.Redraw();
}
}
}
OK
[源码下载] 总结
以上是内存溢出为你收集整理的稳扎稳打Silverlight(43) - 4.0控件之WebBrowser, WebBrowserBrush全部内容,希望文章能够帮你解决稳扎稳打Silverlight(43) - 4.0控件之WebBrowser, WebBrowserBrush所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)