这是一个简单的工作示例。
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 代码隐藏中不需要任何额外内容。
这会产生一个文本框(在用户控件中),当您在其中键入时,它会更新主窗口上的文本块。