Вот как мы делаем это в нашей команде, без поиска RelativeSource, а просто присваивая имя UserControl и ссылаясь на свойства по имени UserControl.
<UserControl x:Class="WpfApplication3.UserControl1" x:Name="UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<StackPanel Background="LightCyan">
<TextBox Margin="8" Text="{Binding Path=Text, ElementName=UserControl1}" />
</StackPanel>
</UserControl>
Иногда мы сталкиваемся с тем, что делаем слишком много всего, что делает UserControl, и часто сокращаем наше использование. Я также следовал бы традиции называть такие вещи, как это текстовое поле, по типу PART_TextDisplay или что-то в этом роде, чтобы в будущем вы могли создавать его в шаблонах, сохраняя при этом код позади.