Silverlight 与HTML元素交互操作
2010-02-15 19:32 闫妍 阅读(150) 评论(0) 编辑 收藏 举报Silverlight 中的HtmlPage 和 HtmlElement 分别代表HTML页面和HTML元素
获取HTML元素改变他的属性
<div> <img id="img1" src="Images/logo.jpg" /> </div>
xaml.cs:
private void Button1_Click(object sender, RoutedEventArgs e)
{
//获取HTML中的img1对象
HtmlElement img = HtmlPage.Document.GetElementById("img1");
//根据输入值设置img1的html属性Width和Height
img.SetAttribute("width", textBox1.Text);
img.SetAttribute("height", textBox2.Text);
}
HTML元素操作Silverlight
<div>
<select id="sel"> <option value="Red">红ì色?</option> <option value="Green">绿ì色?</option> <option value="Blue">蓝?色?</option> </select> </div>
xaml.cs:
public htmldom2()
{
InitializeComponent();
//获取select对象
HtmlElement select = HtmlPage.Document.GetElementById("sel");
//添加select的onchange事件
select.AttachEvent("onchange"
, new EventHandler<HtmlEventArgs>(select_onChange));
}
public void select_onChange(object sender, HtmlEventArgs e)
{
//获取select的选择值
HtmlElement select = sender as HtmlElement;
string value = select.GetAttribute("value");
textBlock1.Text = value;
//根据用户选择值来改变椭圆形的Fill值
switch (value)
{
case "Red":
ellipse1.Fill = new SolidColorBrush(Colors.Red);
break;
case "Green":
ellipse1.Fill = new SolidColorBrush(Colors.Green);
break;
case "Blue":
ellipse1.Fill = new SolidColorBrush(Colors.Blue);
break;
}
}
HTML 文本 和 URL文本的编解码
Html编码
HttpUtility.HtmlEncode(textBlock1.Text);
HTML解码
HttpUtility.HtmlDecode(textBlock2.Text);
URL编码
HttpUtility.UrlEncode(textBlock3.Text);
URL解码
HttpUtility.UrlDecode(textBlock4.Text);
读写Cookie
//客户端Cookie读写类
public class CookieHelper
{
//根据Key和Value写客户端Cookie
public static void SetCookie(string key, string value)
{
DateTime expire = DateTime.UtcNow
+ TimeSpan.FromDays(30);
string cookie = string.Format("{0}={1};expires={2}"
, key, value, expire.ToString("R"));
HtmlPage.Document.SetProperty("cookie"
, cookie);
}
//根据Key读客户端Cookie
public static string GetCookie(string key)
{
key += '=';
//取出所有Cookie
string[] cookies =
HtmlPage.Document.Cookies.Split(';');
//遍历Cookie值
foreach (string cookie in cookies)
{
string cookieStr = cookie.Trim();
//获取Cookie的key名称的位置
if (cookieStr.StartsWith(key,
StringComparison.OrdinalIgnoreCase))
{
//分隔出key的值
string[] vals = cookieStr.Split('=');
if (vals.Length >= 2)
{
//返回值
return vals[1];
}
//如果没有找到则返回空白字符串
return string.Empty;
}
}
//如果没有Cookie则返回空白字符串
return string.Empty;
}
}
在Silverlight 中使用 Dom 的Window 对象
导航
//根据输入值创建URI对象
Uri uri = new Uri(tbUrl.Text, UriKind.RelativeOrAbsolute);
//导航到URI地址
HtmlPage.Window.Navigate(uri);
浏览器提示窗口
提示窗口
HtmlPage.Window.Alert("这是使用HtmlPage调用的消息框!");
判定窗口
if (HtmlPage.Window.Confirm("你确定吗?")){}
输入窗口
string password = HtmlPage.Window.Prompt("请输入密码");
示例出自Silverlight 3.0 开发详解与最佳实践一书