anderi
anderi

Reputation: 777

Binding datatemplate to ContentControl's Content

How to bind textbox text property, within datatemplate, to ContentControl Content property?
(Without bindng via ElementName)

This is my code( that doesn't work):

<Window.Resources>
    <DataTemplate x:Key="Temp">
       <TextBox TextWrapping="Wrap" Text="{TemplateBinding Content}" Height="20" Width="Auto"/>           
    </DataTemplate>
</Window.Resources>
<Grid>
    <ContentControl  ContentTemplate="{DynamicResource Temp}" Content="1"/>           
</Grid>

Upvotes: 3

Views: 6906

Answers (1)

brunnerh
brunnerh

Reputation: 185410

Use a relative source binding:

Text="{Binding RelativeSource={RelativeSource AncestorType=ContentControl}, Path=Content}"

Edit: I probably should note that, in terms of what the binding targets, this is equivalent to {Binding}, as the DataContext in the ContentTemplate is the Content.

However binding directly to the DataContext will not propagate back to the source DataContext, hence the Content of the ContentControl would not change when when using this binding (or the two-way compliant variation {Binding .}, which changes absolutely nothing as far as I can tell).

Upvotes: 5

Related Questions