2009-11-17 60 views
0

索爾到目前爲止,我有:WPF網格橢圓重疊位置

<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> 

我試圖將一個橢圓形的絕對任何ListViewItems點擊的位置,但不能制定出最好的方法去做這個。這個想法是讓一個橢圓出現,然後將它移動到屏幕的右下角,然後移動到其餘內容的頂部。我應該使用畫布覆蓋物還是什麼?我不確定從哪裏開始!

回答

1

而不是使用畫布疊加層,爲什麼不將「MainLibraryGrid」包裝在畫布中?然後,您可以以編程方式向畫布添加省略號,設置Z-Index(使用Canvas.SetZIndex()靜態方法),然後將它們的位置動畫化爲您希望它們覆蓋的ListViewItems(或其他任何地方) )。

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

獲得的點擊(相對於畫布)座標最簡單的方法是處理鼠標事件,即或的MouseLeftButtonDown中的MouseLeftButtonUp一個。使用MouseEventArgs.GetPostion方法,並將Canvas作爲參數傳入將爲您提供一個對應於鼠標點擊相對於封閉畫布的確切位置的Point。然後,您可以將橢圓添加到畫布,並使用Canvas.SetLeft靜態方法將Canvas.SetTop靜態方法放置在Canvas中。

我希望有幫助。