在silverlight 3 時必需要寫javascript才能做到右鍵選單,到4的時候省了javascript這一步驟,但後序的處理,還沒有像window form可以拉拉control就可以做到,要自己處理popup的open、close、選單的樣式、事件等等,很麻煩,也應此各式各樣第三方套件就出來了,像silverlight 4 toolkit中的contextmenuservice,不過呢,小弟想自己寫寫做練習,也就有了本篇。

右鍵事件

silverlight 4 時新增了二個右鍵事件

mouserightbuttondown

mouserightbuttonup

其中只有在mouserightbuttondown時handled,silverlight原本的選單才不會出現。

Silverlight 4 右鍵選單(ContextMenu)

圖一  在mouserightbuttondown時handled的效果。

 

contextmenu基類

我用silverlight text editor sample的contextmenu的基類,它有一個popup,內容有一個滿版透明的canvas當contextmenu的容器,在顯示的時候,點擊contextmenu外時,結束popup。

Silverlight 4 右鍵選單(ContextMenu) 

圖二 contextmenu的基類

Silverlight 4 右鍵選單(ContextMenu)

圖三 popup機制,最上層為contextmenu、中層透明的canvas、下層才是原畫面

 

在app.xaml中加入二個Resource。

ContextMenuButton為每一個Buttion的樣式,為滑鼠移入有黃色效果。

>

 

ListBoxContextMenu為在ListBox上按右鍵時的效果。

>

寫成DataTemplate是方便程式中載入。

 

實作

新增ListBoxContextMenu類,繼承ContextMenu,實作虛擬函式GetContent

return template;
}
然後在ListBox中MouseRightButtonUp的呼叫Show
this.DemoListBox, e);
cm.Show();
}

 

這純粹是學習所以才自己寫寫看,真正開發還是用Toolkit比較好。

Sample下載

 

參考資料

silverlight text editor sample

silverlight 4 contextmenu using contextmenuservice

silverlight 4 toolkit中的滑鼠右鍵選單(contextmenu)支援

相关文章:

  • 2021-10-14
  • 2022-02-11
  • 2021-08-29
  • 2021-04-29
  • 2021-11-05
  • 2021-10-09
  • 2022-12-23
猜你喜欢
  • 2021-09-14
  • 2022-12-23
  • 2021-06-21
  • 2022-12-23
  • 2021-10-21
  • 2022-12-23
  • 2021-12-21
相关资源
相似解决方案