2010-06-30 6 views
1

J'ai la structure suivante en XAML:Comment faire pour ajuster les limites d'un rectangle d'une toile à une autre toile?

<Grid> 
    <ItemsControl x:Name="Items" ItemsSource="{Binding Path=Pages}" Grid.Row="0" Grid.Column="0"> 
    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
     <StackPanel Orientation="Vertical" /> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 

    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
     <!-- Display a white page for each page item --> 
     <local:PageView Margin="0, 25, 0, 0" /> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
    </ItemsControl> 

    <!-- Layer used for displaying preview of drawn shape --> 
    <local:PreviewLayer x:Name="PreviewLayer" Grid.Row="0" Grid.Column="0"/> 
</Grid> 

Le client sera tiré sur la couche d'aperçu une forme, laisser supposer un rectangle. Une fois le dessin terminé, la forme sera ajoutée à la page en dessous de la forme.

Mon problème est le X, Y du rectangle résultant est dans le système de coordonnées du PreviewLayer. Comment puis-je convertir les limites d'un rectangle de la PreviewLayer à un PageView?

Je reçois actuellement le pageView nécessaire en utilisant (la variable page est obtenue ailleurs)

UIElement pageView = (UIElement)this.Items.ItemContainerGenerator.ContainerFromItem(page); 

Mais je ne sais pas comment obtenir les coordonnées du pageView retourné. L'utilisation de Canvas.GetLeft(pageView) renvoie NaN.

Comment puis-je obtenir les limites de Pageview?

Répondre

1

j'ai pu le comprendre à l'aide TranslateToPoint. Au début, ça ne fonctionnait pas, jusqu'à ce que je me rende compte que ContainerFromItem retourne un conteneur de l'article (ce qui est logique si vous lisez le nom de la fonction, mais je suppose que cela a passé sur ma tête).

Obtenir le premier enfant de du conteneur retourné l'élément dont je avais besoin pour TranslateToPoint.

Questions connexes