2009年10月28日 星期三

心得 Silverlight Demo From Msdn

由於 Msdn 提供的教學影片是利用 silverlight 結合 javascript 及 asp.net 的方法來執行 silverlight 的事件, 但現在本人以 visual stdio 2008 的開發平台來實做這個 demo 似乎有點 多此一舉

所以以下 就以 C# 的方式 來編譯那些事件

範例網址



這個範例大致解說如下, 建立四個圖片物件, 分別有三種事件 ,
滑鼠移入物件: onMouseEnter()將所選圖片 透明度增加(預設0.65), 圖片作部份位移
滑鼠移出物件: onMouseLeave()還原位置及透明度
點選物件: onClick()開啟網頁




在 C# 的 code 如下

onMouseEnter()

由於 C# 定義較 javascript 嚴謹,所以要將sender 給予 Image的型態, (因為確定是由Image 所發生的物件 )



void onMouseEnter(Object sender, RoutedEventArgs e)
{
Image img = (Image)sender;
img.Opacity = 1;
Canvas.SetTop(img, Canvas.GetTop(img) + 3);
Canvas.SetLeft(img, Canvas.GetLeft(img) + 3);
}



onMouseLeave()

原理同onMouseEnter()


void onMouseLeave(Object sender, RoutedEventArgs e)
{

Image img = (Image)sender;
img.Opacity = 0.65;
Canvas.SetTop(img, Canvas.GetTop(img) - 3);
Canvas.SetLeft(img, Canvas.GetLeft(img) - 3);
}


onClick()

在C# 使用javascript 的 window 物件, 必須要using "System.Windows.Browser"
但是沒有像javascript那麼齊全, 例如就不能使用 window.open 這個方法, 但是可以利用
Window.Eval 的方式來執行出來javascript的程式
下面就利用 eval 的方式 執行出window.open來打開新網頁


void onClick( object sender, RoutedEventArgs e)
{

Image img = (Image)sender;

switch (img.Name)
{

case "p1":

HtmlPage.Window.Eval("window.open('http://www.google.com.tw/);");

break;
case "p2":
HtmlPage.Window.Eval("window.open('http://tw.yahoo.com/');");
break;

case "p3":
HtmlPage.Window.Eval("window.open('http://www.pchome.com.tw/');");
break;

case "p4":
HtmlPage.Window.Eval("window.open('http://tw.msn.com/');");
break;

default:

break;

}

}


沒有留言: