WPF网格椭圆覆盖位置

时间:2009-11-17 11:31:55

标签: wpf animation .net-3.5

Sor far我有:

<Grid x:Name="MainLibraryGrid">
    <TabControl Name="TabControl1" TabStripPlacement="Bottom">
        <TabItem Header="300s">
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="*" />
                </Grid.ColumnDefinitions>
                <!-- The Library-items -->
                <ListView x:Name="libraryItemsCol1" 
                          Grid.Column="0"
                          HorizontalAlignment="Center"   
                          Margin="10" 
                          VerticalAlignment="Center"
                          ItemContainerStyle="{StaticResource LibraryItemButton}" />
                <ListView x:Name="libraryItemsCol2" 
                          Grid.Column="1"
                          HorizontalAlignment="Center"   
                          Margin="10" 
                          VerticalAlignment="Center"
                          ItemContainerStyle="{StaticResource LibraryItemButton}" />
                <ListView x:Name="libraryItemsCol3" 
                          Grid.Column="2"
                          HorizontalAlignment="Center"
                          Margin="10" 
                          VerticalAlignment="Center"
                          ItemContainerStyle="{StaticResource LibraryItemButton}" />
            </Grid>
        </TabItem>
    </TabControl>
</Grid>

我正在尝试将椭圆置于绝对位于任何单击的ListViewItem的位置,但无法确定执行此操作的最佳方法。我们的想法是让椭圆出现,然后将其动画移动到屏幕的右下角,在其余内容的顶部。我应该使用画布覆盖物还是什么?我不确定从哪里开始!

1 个答案:

答案 0 :(得分:1)

为什么不在画布中包装“MainLibraryGrid”,而不是使用画布覆盖?然后,您可以以编程方式将椭圆添加到Canvas,设置Z-Index(使用Canvas.SetZIndex()静态方法),然后将它们的位置设置为您希望它们覆盖的ListViewItem上的位置(或其他任何地方) )。

<Canvas Name="GridWrapper">
 <Grid>
  <ListView ... />
  <ListView ... />
 </Grid>
</Canvas>

获取点击坐标(相对于画布)的最简单方法是处理其中一个鼠标事件,即MouseLeftButtonDown或MouseLeftButtonUp。使用MouseEventArgs.GetPostion方法,并将Canvas作为参数传入,将为您提供一个Point,该Point对应于鼠标单击相对于封闭画布的确切位置。然后,您可以将椭圆添加到画布并使用Canvas.SetLeft&amp; Canvas.SetTop静态方法将椭圆定位在Canvas中。

我希望有所帮助。