Blend设计VSM
??? Silverlight中的ControlTemplate(1)-概念
???? Silverlight中的ControlTemplate(2)-概念
???? Silverlight中的ControlTemplate(3)-Blend設(shè)計(jì)ControlTemplate
?????
??? 上一篇我是通過Blend簡單的演示如何修改ControlTemplate,這一篇關(guān)注VSM這個部分。
??? 概念的東西就不再重復(fù)了,這篇通過Blend演示如何一步一步設(shè)計(jì)VisualStateManager
??? 首先在WorkSpace上放置一個橢圓,這里設(shè)置一下其Name和Fill屬性
? 在Blend3中,對一個FrameworkElement元素應(yīng)用動畫時,Blend會自動對未命名的元素進(jìn)行處理,這里我們將橢圓命名為MyEliipse
? 現(xiàn)在開始設(shè)計(jì)動畫,為了簡單起見,這里就設(shè)計(jì)當(dāng)鼠標(biāo)進(jìn)入MyEllipse時,填充色由紅變?yōu)辄S色
? 選擇MyEllipse(默認(rèn)快捷鍵V)
???????
選中之后,我們打開States面板
?????????? ? 因?yàn)槔碚撔缘臇|西前面幾篇文章已經(jīng)分析過了,所以這里就不花篇幅了
? 如上圖所示,單擊Add state group這個按鈕,創(chuàng)建一個VisualStateGroup,給其命名為CommonStates,并將默認(rèn)的Transition時間
變換為0.5s?
?? 現(xiàn)在單擊 Add State按鈕添加一個State,并且命名為MouseEnter,這個時候你會發(fā)現(xiàn),Workspace會出現(xiàn)紅色邊線
?? ?? 這個其實(shí)就是提醒你,這時候?qū)isualTree的任何改變將記錄到一個Storyboard中
這個時候就可以通過點(diǎn)擊Objects and Timeline中的Show Timeline按鈕對Timeline進(jìn)行動畫修改咧,
確保選中MyEllipse圖形,通過Recode Keyfrme按鈕記錄動畫
這里按照前面的想法,當(dāng)鼠標(biāo)進(jìn)入時,將MyEllipse的Fill屬性由Red改為Yellow
???? ?
? 這樣我們就設(shè)計(jì)好了一個VisualState了,那么這里我另外再設(shè)計(jì)一個名MouseLeave的 VisualState,使得鼠標(biāo)移走時,顏色由黃色變回紅色
? 其實(shí)過程都是一樣的,我就不重復(fù)了。
??????????????????????????????? ? 那么如果想修改狀態(tài)遷移,也可以直接在Blend中修改。
? 可以看看生成的XAML代碼:??? ?
??? 為了看到效果,我們在VS中進(jìn)行設(shè)置:
private void MyEllipse_MouseEnter(object sender, System.Windows.Input.MouseEventArgs e) { VisualStateManager.GoToState(this, "MouseEnter", true); } private void MyEllipse_MouseLeave(object sender, System.Windows.Input.MouseEventArgs e) { VisualStateManager.GoToState(this, "MouseLeave", true); }? 這里用到了VisualStateManager類中的GoToState這個方法,運(yùn)行一下就可以看到效果了
? 其實(shí)到這里已經(jīng)把前面VSM里大部分概念都涉及到了,給我的感覺這個地方如果掌握的好,并且還有好的創(chuàng)意,
我相信做出來的效果肯定很炫。這篇就到這里,希望對使用Blend的朋友有點(diǎn)幫助。
?
?
?
本篇代碼:Silverlight3環(huán)境? VSMExample
轉(zhuǎn)載于:https://www.cnblogs.com/626498301/archive/2010/12/13/1904592.html
總結(jié)
以上是生活随笔為你收集整理的Blend设计VSM的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vbs调用WebService -- 使
- 下一篇: 敏感词过滤算法对比,顺便开源了个工具库