Expose DependencyProperty

You can set DataContext to this in UserControl's constructor, then just bind by only path.


DataContext = this;


<TextBox Margin="8" Text="{Binding Text} />

That is how we're doing it in our team, without the RelativeSource search, rather by naming the UserControl and referencing properties by the UserControl's name.

<UserControl x:Class="WpfApplication3.UserControl1" x:Name="UserControl1"
    <StackPanel Background="LightCyan">
        <TextBox Margin="8" Text="{Binding Path=Text, ElementName=UserControl1}" />

Sometimes we've found ourselves making too many things UserControl's though, and have often times scaled back our usage. I'd also follow the tradition of naming things like that textbox along the lines of PART_TextDisplay or something, so that in the future you could template it out yet keep the code-behind the same.