在自定义控件中创建视图以隐藏零件

时间:2011-02-24 17:48:01

标签: silverlight windows-phone-7

我正在为Silverlight(特别是wp7)创建自定义Silverlight控件。我的控制主要是一个按钮,当有人点击按钮时,我想为一个高大的矩形设置动画,这个矩形充满了从按钮后面飞出的其他内容。

问题是当我出来时,我不知道如何隐藏或只绘制这个矩形的部分。例如,当这个矩形是一半时,只显示上半部分,而其余部分则隐藏。如何在不编写复杂代码的情况下完成此操作?据推测,我只需要能够定义某种“视图”,其中只有此视图中的内容呈现在屏幕上。

思考?任何帮助表示赞赏!

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

为了确保只显示父容器中的动画矩形部分,并且除此之外没有任何内容,您需要能够将父项的子项剪切到它的边界。不幸的是,Silverlight中没有ClipToBounds属性,但您可以使用Colin Eberhardt的clipping attached behavior来达到同样的效果。