我有一个名为EnhancedTextBox
的自定义控件,它是一个包含TextBox
和Button
的用户控件。 我希望它对消费者来说大部分看起来像一个TextBox
,因此我做了以下操作:
<UserControl.Template>
<ControlTemplate TargetType="textBoxes:EnhancedTextBox">
...
<TextBox Text="{TemplateBinding Text}"...
在EnhancedTextBox中,我有以下内容:
public static readonly DependencyProperty TextProperty =
DependencyProperty.Register("Text", typeof (String), typeof (EnhancedTextBox));
public String Text
{
get { return (String) GetValue(TextProperty); }
set { SetValue(TextProperty, value); }
}
然而,当我按照以下方式使用它时:
<EnhancedTextBox Text="{Binding MyText, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}}" />
然后,
MyText
没有被更新,我检查了一下 EnhancedTextBox.Text
,结果是 null。我错过了什么?我已经盯着这个问题看了一会儿,但无法弄清楚出了什么问题。我甚至认为可能是因为我使用了相同的名称,所以创建了一个名为 Text1
的属性,但并没有起作用...另外值得注意的是,如果我使用普通的 TextBox
,那么这一切都能正常工作。因此,我相当确定问题出在 EnhancedTextBox
本身。
TextProperty
真的需要吗?难道不能只使用一个普通属性来绑定文本框吗? - poy