WP8 1 類似「IT之家」 自定義訊息 的實現

2022-01-28 16:30:57 字數 3230 閱讀 5680

曾經在wp7、wp8下的訊息 使用的都是coding4fun.phone.toolkit裡面的toastprompt類來實現的。

現在我們來自己做個類似it之家的這種效果:從右邊彈出,經過幾秒後會自動消失。

首先明確幾個需求:

1.在任何介面都能夠彈出此訊息

2.可以自定義訊息的格式內容以及訊息的消失時間

(包括是否含有標題、字型大小、排列...)

3.訊息的提示與消失都有動畫效果

一、取得當前頁面上的某個panel, 用於在此上面呈現訊息:

contentpresenter、panel都是繼承於 frameworkelement的

contentpresenter: 只能容納乙個元素

繼承於panel 的控制項是可以容納多個子控制項的,所以將訊息顯示在這個上面

panel popupparentpanel; //

訊息在此panel上彈出

frame rootvisualframe; //

當前頁面的可視根

public

panel popupparentpanel}}

return

this

.popupparentpanel;}}

二、展示show方法:

bool blocked;    //

預設為false

public

void

show()

initcontrol();

//有關訊息介面的**略,詳細請看後文給出的demo

if (popupparentpanel != null

)

else

showstoryboard();

//開啟動畫

blocked = true

; }

}

public

class

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++;}}

}

view code

三、顯示訊息動畫效果以及新增訊息顯示完成事件:

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

void btntoast_click(object

sender, routedeventargs e)

;toast.show();

}

右邊是本篇隨筆的demo:customtoastsample.rar

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 開發,一直被其他語言看不起,我想你們中的很多人遇到這個問題的不在少數,但是 我還是堅持下來...