2010-11-30 5 views
1

sachant que MyControl a un depProp. PX1, quelle liaison devrais-je préfèrer, line1 ou line2?Préférence de reliure: Nom ou Type?

<UserControl x:Class="MyProject.MyControl" 
      xmlns:my="clr-namespace:MyProject" 

      x:Name="ParentControl"> 

    <Canvas> 
     <Line x:Name="line1" 
       X1="{Binding RelativeSource={RelativeSource AncestorType={x:Type my:MyControl}}, Path=PX1}" /> 

     <Line x:Name="line2" 
       X1="{Binding ElementName=ParentControl, Path=PX1}" /> 

    </Canvas> 
</UserControl> 

Je veux dire, nous devons garantir l'unicité du nom « ParentControl » par tous les parents possibles dans le second cas?

Répondre

3

Je préférerais la dernière syntaxe dans la plupart des cas, car il est plus facile de lire l'intention, à condition que vous choisissiez un nom clair pour le ParentControl. L'inconvénient est que cela échoue si vous changez le nom, alors que le premier continuera à fonctionner. Note: PX1 n'a pas besoin d'être un DP, tant que le UserControl implémente INotifyPropertyChanged et notifie quand PX1 change.

+0

+1, cela résume assez bien :) J'ai toujours trouvé la syntaxe RelativeSource xaml un peu trop longue .. –

+0

OK, et si dans le conteneur parent j'ai un élément nommé 'ParentControl'? – serhio