2011-02-24 94 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来实现相同的效果。