2010-11-30 12 views
1

zu wissen, dass MyControl einen depProp hat. PX1, welche Bindung sollte ich bevorzugen, line1 oder line2?Bindungspräferenz: Name oder Typ?

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

Ich meine, wir sollten die Einzigartigkeit des Namen gewährleisten „Parent“ pro aller möglichen Eltern im zweiten Fall?

Antwort

3

Ich würde die letztere Syntax in den meisten Fällen bevorzugen, da es einfacher ist, die Absicht zu lesen, solange Sie einen eindeutigen Namen für das ParentControl wählen. Der Nachteil ist, dass dies fehlschlägt, wenn Sie den Namen ändern, während der erste weiterhin funktioniert.

Seite Hinweis: PX1 muss nicht unbedingt ein DP sein, solange das UserControl INotifyPropertyChanged implementiert und benachrichtigt, wenn PX1 geändert wird.

+0

+1, das fasst es ziemlich zusammen :) Ich habe immer gefunden, dass die RelativeSource XAML-Syntax etwas zu lang ist. –

+0

OK, was ist, wenn ich im Elterncontainer ein Element namens 'ParentControl' habe? – serhio

Verwandte Themen