Binding datatemplate to ContentControl's Content
Asked Answered
R

1

3

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>
Repro answered 2/6, 2011 at 11:33 Comment(0)
S
5

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

Sclerous answered 2/6, 2011 at 11:55 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.