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的位置,但无法确定执行此操作的最佳方法。我们的想法是让椭圆出现,然后将其动画移动到屏幕的右下角,在其余内容的顶部。我应该使用画布覆盖物还是什么?我不确定从哪里开始!
答案 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中。
我希望有所帮助。