在WPF中公开绑定的子控件依赖属性

Lib*_*bor 5 .net wpf xaml dependency-properties custom-controls

我用这个XAML UserControl调用CustomTextBox了一个非常简单的东西:

<UserControl x:Class="CustomTextBox" ... >
    <Grid>
        <TextBox x:Name="InnerTextBox"/>
    </Grid>
</UserControl>
Run Code Online (Sandbox Code Playgroud)

现在当我使用CustomTextBox并想要绑定时InnerTextBox.Text,它不起作用:

... {Binding ElementName=CustomTextBox, Path=InnerTextBox.Text}
Run Code Online (Sandbox Code Playgroud)

我尝试了另一种方式,也不起作用:

... {Binding ElementName=CustomTextBox.InnerTextBox, Path=Text}
Run Code Online (Sandbox Code Playgroud)

我知道我可以定义一个新的依赖属性调用CustomTextBox.Text然后将其绑定到InnerTextBox.Text但我计划拥有许多属性的自定义控件,并且复制所有这些属性仅仅是为了支持绑定是一项工作.此外,复制/包装属性意味着每个值存储两次.

在WinForms中,这是一个简单的继承问题,所有属性都可以自动使用.在WPF中,无法继承XAML控件,并且无法访问属性.

有没有简单的方法来设置从某个控件到UserControl子元素属性的绑定?

小智 3

1.在控件后面的代码中创建一个新的 DP,假设我们将其称为文本
2.在代码的 xaml 中:

<TextBox x:Name="InnerTextBox" Text={Binding Text}/> 
Run Code Online (Sandbox Code Playgroud)


3.确保textBox的DataContext是UserControl