タグ:

ElementNameでのバインドさせる方法

example [WPF]

<TextBox Name="TextBox1" />
<Label Name="Label1" Width="120">
   <Binding ElementName="TextBox1" Path="Text" />
</Label>

ElementNameは難しい事はないと思います。各コントロールのNameプロパティは一意に識別する物なので、重複が無い為一発でコントロールを指定することができます。


RelativeSourceでのバインドさせる方法

example [WPF]

<StackPanel Name="StackPanel1">
   <!--Selfの使用例-->
   <Button Name="Button2" Content="{Binding RelativeSource={RelativeSource Self},Path=Name}" />
 
   <!--TemplatedParentの使用例-->
   <Button Content="Button1">
      <Button.Template>
         <ControlTemplate TargetType="{x:Type Button}">
            <TextBlock Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Content}" />
         </ControlTemplate>
      </Button.Template>
   </Button>
 
   <!--AncestorTypeの使用例-->
   <StackPanel Name="StackPanel2">
      <Button Name="Button4" Content="{Binding RelativeSource={RelativeSource AncestorType={x:Type StackPanel}},Path=Name}" ></Button>
      <Button Name="Button3" Content="{Binding RelativeSource={RelativeSource AncestorType={x:Type StackPanel}, AncestorLevel=2},Path=Name}" ></Button>
   </StackPanel>
</StackPanel>
RelativeSourceの種類

self

自分自身

TemplatedParent

テンプレートを呼び出したコントロール

AncestorType

指定のタイプのコントロールになるまで祖先を遡ります。

AncestorType使用時には、AncestorLevel指定すると、指定のタイプが指定された回数出現するまでさかのぼるようになります。