的RelativeSource TemplatedParent
此模式使一個給定的ControlTemplate屬性綁定到所述的ControlTemplate被施加到控制的一個屬性。爲了最大限度地瞭解這裏的問題是,波紋管
<Window.Resources>
<ControlTemplate x:Key="template">
<Canvas>
<Canvas.RenderTransform>
<RotateTransform Angle="20"/>
</Canvas.RenderTransform>
<Ellipse Height="100" Width="150"
Fill="{Binding
RelativeSource={RelativeSource TemplatedParent},
Path=Background}">
</Ellipse>
<ContentPresenter Margin="35"
Content="{Binding RelativeSource={RelativeSource
TemplatedParent},Path=Content}"/>
</Canvas>
</ControlTemplate>
</Window.Resources>
<Canvas Name="Parent0">
<Button Margin="50"
Template="{StaticResource template}" Height="0"
Canvas.Left="0" Canvas.Top="0" Width="0">
<TextBlock FontSize="22">Click me</TextBlock>
</Button>
</Canvas>
如果我想在一個給定的控件的屬性適用於它的控制模板,然後我就可以使用TemplatedParent模式的例子。還有一個與TemplateBinding相似的標記擴展,它是第一種簡寫形式,但是TemplateBinding是在編譯時在TemplatedParent的對比度下進行評估的,TemplatedParent是在第一次運行時間之後進行評估的。正如你可以在下圖中所說的那樣,背景和內容從按鈕內部被應用到控制模板。
如果你需要雙向綁定,你必須使用第二個選項 –