2010-11-30 15 views
1

は、MyControlにdepPropがあることを認識しています。 PX1、私は何を結ぶべきですか?line1またはline2バインディングの設定:名前またはタイプ?

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

は、私たちは名前「ParentControl」第二の場合は、すべての可能な両親あたりの一意性を保証しなければならない、意味ですか?

答えて

3

ほとんどの場合、ParentControlの明確な名前を選択する限り、インテントを読むのが簡単なので、後者の構文を使用することをお勧めします。欠点は、名前を変更すると失敗するということですが、最初のものは引き続き機能します。

サイドノート:PX1は、UserControlがINotifyPropertyChangedを実装し、PX1が変更されたときに通知する限り、実際にはDPである必要はありません。

+0

+1、それはそれを要約しています:)私はいつもRelativeSource xaml構文が少し長くなることを発見しました。 –

+0

親コンテナに 'ParentControl'という名前の要素があるとどうなりますか? – serhio

関連する問題