2009-11-17 6 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» на холсте? Затем вы можете программно добавлять эллипсы в Canvas, устанавливать Z-Index (используя статический метод Canvas.SetZIndex()), а затем анимировать свою позицию, чтобы быть над ListViewItems, которые вы хотите, чтобы они покрывали (или где-либо еще в этом отношении).

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

Самый простой способ получить координаты щелчка (по отношению к полотну) будет обрабатывать один из событий мыши, то есть, MouseLeftButtonDown или MouseLeftButtonUp. Используя метод MouseEventArgs.GetPostion и передавая в Canvas как аргумент, вы получите точку, которая соответствует точной позиции щелчка мыши относительно охватывающего холста. Затем вы можете добавить свой эллипс в холст и использовать статические методы Canvas.SetLeft & Canvas.SetTop для размещения эллипса на холсте.

Я надеюсь, что это поможет.

Смежные вопросы