假设我没有列表框,或者我现在正在使用绑定到它的项目的Wrap面板。如果重要,这些项目使用自定义控件的自定义数据模板。
现在我想对点击(或任何一般事件)做出反应,并向用户缩放项目,重叠周围的项目。基本上是用户选择的特定项目的更详细视图。该项目将向用户缩放,显示更多内容和选项以与其进行交互。
非常像这里:http://ie.microsoft.com/testdrive/Performance/AmazonShelf/Default.html
问题很简单,所有其他项目将随着它的增长为所选项目腾出空间。我不想要这个。
我无法弄清楚如何让它与周围的物品重叠。我应该使用什么项目容器(请记住我有点想要/需要包装行为)
任何提示将不胜感激。如果有任何新内容,请使用WPF 4?
谢谢。
更新: 我想和Josh的建议一起去。 乔希,这听起来就像我需要的一样。无论我做什么,我似乎无法让RenderTransform发生。我把头发拉出来了。
为什么这不起作用?动画淡出效果很好。关于click事件的两个评论动画也可以正常工作。但渲染变换不会做任何事情。
我试过了: “(Grid.RenderTransform)。(RotateTransform.Angle)” “的RenderTransform。(RotateTransform.Angle)” “(的RenderTransform)。(RotateTransform.Angle)” “(FrameworkElement的)。(RotateTransform.Angle)” “(项目)。(RotateTransform.Angle)”
你们如何调试这些东西?到目前为止,没有Intellisense,它对我来说或多或少是一个猜谜游戏。
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<my:custom x:Name="Item" Margin="10,10 10,10" />
</Grid>
<DataTemplate.Triggers>
<EventTrigger RoutedEvent="FrameworkElement.Loaded" SourceName="Item">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetName="Item" Storyboard.TargetProperty="Opacity" From="0.0" To="1.0" Duration="0:0:2"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<EventTrigger RoutedEvent="FrameworkElement.MouseUp" SourceName="Item">
<BeginStoryboard>
<Storyboard>
<!--<DoubleAnimation Storyboard.TargetName="Item" Storyboard.TargetProperty="Width" To="200" Duration="0:0:2" />-->
<!--<DoubleAnimation Storyboard.TargetName="Item" Storyboard.TargetProperty="Height" To="400" Duration="0:0:2" />-->
<DoubleAnimation Storyboard.TargetName="Item" Storyboard.TargetProperty="(Grid.RenderTransform).(RotateTransform.Angle)" From="0" To="180" Duration="0:0:2" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ItemsControl.ItemTemplate>
答案 0 :(得分:0)
Wrappanel将根据大小制作房间。你应该使用Canvas进行这种Zoom行为。既然你也想要Wrappanel,你可以在Wrappanel的顶部添加一个Canvas。当您单击某个项目时,只需将该单击的项目添加到Canvas children&amp;设置合适的尺寸,Canvas.Top&amp; Canvas.Left,在某些事件中删除相同的内容。
答案 1 :(得分:0)
啊,我开始撰写一篇关于类似技术的博客文章,我用它来自定义ListBox(see this page,用于模拟iPhone详细信息视图的标准Silverlight ListBox示例。)不幸的是我从未完成过帖子。
无论如何,您需要做的是将渲染变换应用于您可以设置动画的项目。然后在动画结束时,您可以将另一个元素翻转到包含详细信息视图的前景。与布局转换不同,渲染变换不会影响其他项的布局。