自定义控件中的DependencyProperty问题

| 在我的代码中,我在自定义控件ValidatingTextBox中声明了以下依赖项属性:
public DependencyProperty visibleText = DependencyProperty.RegisterAttached(\"visText\", typeof(String), typeof(ValidatingTextBox));
public String visText
{
    get { return theBox.Text; }
    set { theBox.Text = value; }
}
但是当我尝试使用xaml时
<local:ValidatingTextBox>
    <ValidatingTextBox.visibleText>

    </ValidatingTextBox.visibleText>
</local:ValidatingTextBox>
它说在ValidatingTextBox中不存在这样的依赖项属性。我究竟做错了什么?有没有更好的方法与自定义控件的子文本框进行交互?     
已邀请:
        在将其注册为
visText
的register方法中,字段名称与属性本身无关。您似乎还定义了一个将像普通属性一样使用的附加属性,应该将其定义为普通依赖项属性。 进一步,您通过执行以下操作创建了两个属性,一个没有CLR包装器的de亵属性和一个普通属性:
public String visText
{
    get { return theBox.Text; }
    set { theBox.Text = value; }
}
它与您实际的依赖属性的值无关,因为它从不访问它。除此之外,属性字段应为静态和只读。 建议仔细阅读《 Depedency属性概述》,因为这很糟,还可以阅读有关创建自定义依赖项属性的文章,这应该会很有帮助。 要解决有关如何与子控件进行交互的问题:创建(适当)依赖项属性并绑定到它们。 由于该属性已经存在于子级上,因此您也可以使用
AddOwner
重用该属性:
public static readonly DependencyProperty TextProperty =
    TextBox.TextProperty.AddOwner(typeof(MyControl));
public string Text
{
    get { return (string)GetValue(TextProperty); }
    set { SetValue(TextProperty, value); }
}
<!-- Assuming a usercontrol rather than a custom control -->
<!-- If you have a custom control and the child controls are created in code you can do the binding there -->
<UserControl ...
      Name=\"control\">
    <!-- ... -->
    <TextBox Text=\"{Binding Text, ElementName=control}\"/>
    <!-- ... -->
</UserControl>
    

要回复问题请先登录注册