2009-06-29 4 views
1

Je suis nouveau à XAML, alors s'il vous plaît soyez conscient que ma question peut contenir un sujet misundrestanding.XAML - Obtenir la position de contrôle de l'utilisateur par rapport à la fenêtre entière comme propriété de liaison

Est-il possible de lier la position globale de XAML usercontrol (par rapport à la fenêtre) pour vérifier si elle est actuellement visible à l'écran? Usercontrol est inséré dans ScrollViewer et je pense que quelque chose comme:

<UserControl x:Class="Test.MessageControl" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Width="300"> 
     <StackPanel > 
      <Label Name="LabelTest" 
      Content="{Binding RelativeSource={RelativeSource Self}, 
      Path=MAGIC-GOES-HERE-Location.Y }" /> 
     </StackPanel> 
    </UserControl> 

Répondre

2

Non, il est impossible d'obtenir le « emplacement » de vos contrôles XAML (pas directement comme nous sommes habitués, au moins). Dans WPF, les contrôles n'ont plus de propriétés "location". Les contrôles et les éléments d'écran n'ont que des propriétés de largeur et de hauteur, ce qui ne vous aidera pas à trouver où ils se trouvent dans la fenêtre.

MAIS: Si vous avez vraiment besoin de savoir où quelque chose est, vous figure CAN it out en utilisant les propriétés du contrôle parent. (Microsoft a fait en sorte que ce soit le seul moyen fiable de le faire plus.)

Exemple:
Si vous avez une grille avec deux lignes, et votre UserControl est dans la deuxième rangée - vous peut traiter la propriété ActualHeight de la première ligne comme si elle est la propriété "Location.Y" de votre UserControl, au lieu de chercher le contrôle lui-même pour vous fournir son emplacement.

C'est quelque chose que vous devrez vous habituer, puisqu'il n'y a plus moyen de le contourner. Vous pouvez utiliser l'élément <Grid> dans votre conception. Il fournit des informations sur l'emplacement de vos contrôles d'une manière très directe. Cela fonctionne comme une version plus intelligente d'une table HTML de dimensionnement dynamique. Vous pouvez récupérer les propriétés ActualWidth et ActualHeight de n'importe quelle ligne ou colonne - ou même de la totalité de la grille si vous le souhaitez.

Questions connexes