Вот простой рабочий пример.
UserControl XAML содержит только двунаправленное текстовое поле. Источник материал родственник более многословен, чем вам нужно, вы могли бы иметь контекст данных установлен выше, но это просто, чтобы понять, где свойство исходит от:
<TextBox x:Name="ucTextBox"
Text="{Binding Path=UcText,
RelativeSource={RelativeSource AncestorType={x:Type local:UserControl1}},
Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged}" />
Контрольный код пользователя за декларирует либо зависимость свойство или, как показано здесь, обычное свойство реализации INotifyPropertyChanged:
private string _ucText;
public string UcText
{
get { return _ucText; }
set
{
_ucText = value;
OnPropertyChanged("UcText");
}
}
MainWindow XAML затем устанавливает его собственный блок текста в текст свойства из текстового поля в элементе управления пользователя, например, так:
<StackPanel Orientation="Vertical">
<TextBlock Text="{Binding Path=UcText, ElementName=uc1}"/>
<local:UserControl1 x:Name="uc1" />
</StackPanel>
В коде MainWindow ничего лишнего не требуется.
В результате это текстовое поле (в пользовательском элементе управления), которое при вводе внутри него обновляет текстовый блок в главном окне.