2010-11-30 66 views
1

知道MyControl有deprop。 PX1,我应该有什么约束力,line1line2绑定首选项:名称或类型?

<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选择明确的名称即可。不利的一面是,如果你改变了名字,这将失败,而第一个将继续工作。

侧注意:只要UserControl实现INotifyPropertyChanged并在PX1更改时通知,PX1实际上不需要是DP。

+0

+1,这几乎总结了:)我总是发现RelativeSource xaml语法有点长.. – 2010-11-30 23:31:59