【发布时间】:2014-01-28 14:45:00
【问题描述】:
我有一个名为EnhancedTextBox 的自定义控件,它是一个具有TextBox 和Button 的UserControl。对于消费者来说,我希望它看起来像一个文本框,所以我做了以下操作:
<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 并且它是空的。我错过了什么?我已经盯着这个看了一会儿,不知道出了什么问题。我什至认为这可能是因为我使用了相同的名称,所以创建一个名为 Text1 的属性,它不起作用....
另外值得注意的是,如果我使用普通的TextBox,那么这一切都有效。所以,我相当肯定问题出在EnhancedTextBox 本身
【问题讨论】:
-
你试过
<EnhancedTextBox Text={Binding MyText, Mode=TwoWay} />吗? -
@gomi42 更新了...抱歉我想我缩短了太多
-
@gomi42 我相信
TextBox无论如何默认为 2way 绑定 -
@geedubb 另外,更新了...只是将其放入 SO 中的一个错字
-
@Andrew 我需要它是一个 DependencyProperty 以便它可以在 XAML 中使用
标签: c# .net wpf dependency-properties templatebinding