2011-02-24 96 views
0

我正在爲Silverlight(特別是wp7)創建自定義Silverlight控件。我的控制主要是一個按鈕,當有人點擊按鈕時,我想要爲填充其他內容的高大矩形制作動畫,這些內容會從按鈕後面飛出。在自定義控件內創建視圖以隱藏零件

問題是我不知道如何隱藏或只繪製這個矩形的一部分,因爲我出來。例如,當這個矩形是一半的時候,只有上半部分顯示,其餘部分隱藏。我怎樣才能做到這一點,而無需編寫一些複雜的代碼?據推測,我只需要能夠定義某種「視圖」,只有這個視圖內的東西被渲染到屏幕上。

想法?任何幫助表示讚賞!

回答

2

您可以使用VisualStateManager爲視圖定義可能的視覺狀態。另外,你可以定義這些狀態之間的轉換(包括動畫)。在你的按鈕的Click事件處理程序中,你需要告訴VisualStateManager轉換到不同的狀態 - 然後就完成了。

http://msdn.microsoft.com/en-us/library/system.windows.visualstatemanager.gotostate%28v=vs.95%29.aspx

這可能看起來像這樣在您的視圖的後臺代碼:

void OnClick(object sender, RoutedEventArgs e) 
{ 
    VisualStateManager.GoToState(this, "StateName", true); 
} 

爲了輕鬆地定義動畫,你可以使用Expression Blend的4

0

爲了保證只顯示父容器中的動畫矩形的部分,並且除此之外沒有任何內容,您需要能夠將父級的子元素限制爲邊界。不幸的是,Silverlight中沒有ClipToBounds屬性,但是您可以使用Colin Eberhardt的clipping attached behavior來實現相同的效果。