曾經在wp7、wp8下的訊息 使用的都是coding4fun.phone.toolkit裡面的toastprompt類來實現的。
現在我們來自己做個類似it之家的這種效果:從右邊彈出,經過幾秒後會自動消失。
首先明確幾個需求:
1.在任何介面都能夠彈出此訊息
2.可以自定義訊息的格式內容以及訊息的消失時間
(包括是否含有標題、字型大小、排列...)
3.訊息的提示與消失都有動畫效果
一、取得當前頁面上的某個panel, 用於在此上面呈現訊息:
contentpresenter、panel都是繼承於 frameworkelement的
contentpresenter: 只能容納乙個元素
繼承於panel 的控制項是可以容納多個子控制項的,所以將訊息顯示在這個上面
panel popupparentpanel; //二、展示show方法:訊息在此panel上彈出
frame rootvisualframe; //
當前頁面的可視根
public
panel popupparentpanel}}
return
this
.popupparentpanel;}}
bool blocked; //預設為false
public
void
show()
initcontrol();
//有關訊息介面的**略,詳細請看後文給出的demo
if (popupparentpanel != null
)
else
showstoryboard();
//開啟動畫
blocked = true
; }
}
publicview codeclass
commonhelper
return getvisualchildrenandselfiterator(element).skip(1
); }
public
static ienumerablegetvisualdescendants(dependencyobject element)
return getvisualdescendantsandselfiterator(element).skip(1); //
去除元素本身
}
private
static ienumerablegetvisualdescendantsandselfiterator(dependencyobject element)
dependencyobject iteratorvariable1 =iteratorvariable0.dequeue();
yield
return
iteratorvariable1;
foreach (dependencyobject obj2 in
getvisualchildren(iteratorvariable1))}}
private
static ienumerablegetvisualchildrenandselfiterator(dependencyobject element)
yield
return
visualtreehelper.getchild(element, childindex);
childindex++;}}
}
三、顯示訊息動畫效果以及新增訊息顯示完成事件:
1隱藏訊息動畫以及新增訊息隱藏完成事件一樣的。public
event eventhandler toastshowcomplated; //
訊息顯示完成事件 23
public
void
showstoryboard()4;
10 da.easingfunction = new circleease() ;
11storyboard.settarget(da, toasttransform);
12 storyboard.settargetproperty(da, "
translatetransform.x
"); //
繫結目標屬性和以前有些區別
13sbshow.children.add(da);
1415
//設定透明度從0變為1
16 doubleanimation da1 = new doubleanimation() ;
17storyboard.settarget(da1, toastgrid);
18 storyboard.settargetproperty(da1, "
frameworkelement.opacity");
19sbshow.children.add(da1);
2021 sbshow.begin(); //
開始動畫22}
23void sbshow_completed(object sender, object
e)2432}
3334
async
void time_completed(object
e)35
);41 }
四、使用該自定義訊息:
private右邊是本篇隨筆的demo:customtoastsample.rarvoid btntoast_click(object
sender, routedeventargs e)
;toast.show();
}
WP 8 1開發 電子羅盤
羅盤,估計也不用我過多介紹,學過初中物理的都知道,不管是指南針,還是指北針,其本質就是用來辨別方向的。操作電子羅盤偉感器也不複雜,主要就是兩個角度 1 當前方向與磁北的夾角 2 當前方向與地北的夾角。同時,我們也了解到,地理北極與地磁北極並不是重合的,存在地偏角。在讀取電子羅盤資料時,可以優先考慮讀...
WP 8 1開發 同時更新多種磁貼
一般應用程式都會包含多個尺寸的磁貼,如小磁貼 71 71 中磁貼 150 150 和寬磁貼 310 150 常規的磁貼更新做法是用xml文件來定義更新內容,然後再提交更新。如 以上做法是分兩次更新的,那麼,有沒有可能做到一次更新就能同時修改150x150,以及310x150兩種磁貼呢?先來分析一下,...
質問微軟 WP8 1開發HTTPS 真費勁
本人用c 多年,wpf2年,一直想做點應用為wp生態貢獻一點力量,最近終於有機會接觸了 家裡的本子是2年前的低壓i3,不支援虛擬化,一直沒有真機.最近同事媽媽換下來乙個820給我拿來做開發用,非常感謝 作為c 開發,一直被其他語言看不起,我想你們中的很多人遇到這個問題的不在少數,但是 我還是堅持下來...