天天看點

手把手玩轉win8開發系列課程(18)

 這節,加入彈出對話框

彈出對話框

這個appbar button能起作用類額 ,他處理的源代碼是直接放在click event裡面中。大多數的buttons操作更需要一些額外的使用者體驗,是以我們使用flyout控件。

當使用者點選了appbar按鈕以後,這個彈出視窗就會出現,給予使用者一定提示,當使用者再度點選這個控件以後,這個東西就會消失。這有點像什麼——像winfrom彈出的對話框,但他不是一個視窗,或者一個頁面,他隻是依附于這個視窗的某個層。這樣彈出的視窗的,實作js中操作是使用了flyout控件,在xaml與c#實作一模一樣的效果,需要popup控件,并且在相應的cs檔案中進行了編碼使其popup控件定位。由于,我所運用的win8消費者預覽版,我真希望在win8的正式版中能夠屏蔽這樣的差異,這樣我不需要對popup控件進行定位了。

這裡我說說項目以外popup的問題。

popup是一個神奇的東西,可以很容易的解決一些複雜問題。它将控件的布局擴充到了第三維,可以将其child中的内容顯示在目前界面之上。popup位于目前silverlight可見控件區域之上,即使你為某個控件設定了一個比popuo要大的canvas.zindex值也不會顯示在popup之上,不過popup之間可以用canvas.zindex區分哪個popup顯示在上面。還有一點,popup的child中的事件冒泡已經自己處理了,就好像popup與下面的所有控件沒有關系一樣。

 在實際應用中,有一個約定俗成的操作,就是彈出一個popup後在popup可見區域外的任意地方點選,popup會自動關閉,而popup本身是沒有實作這個功能的。具體如何實作,這方案也有很多,下面是比較常用的方法:在要顯示的内容下面放一個背景透明且覆寫整個silverlight可見區域的canvas,在canvas的點選事件處理方法中關閉popup。之是以選擇canvas是因為在布局方式中隻有canvas在背景透明時可以偵測到點選事件

哝——對popup有了一個簡單介紹。

繼續閱讀