gpt4 book ai didi

c# - TemplateBinding 不适用于文本框文本

转载 作者:太空狗 更新时间:2023-10-29 22:13:52 25 4
gpt4 key购买 nike

我有一个名为 EnhancedTextBox 的自定义控件,它是一个具有 TextBoxButton 的 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 本身

最佳答案

看完我想通了this MSDN about TemplateBinding .具体来说,

A TemplateBinding is an optimized form of a Binding for template scenarios, analogous to a Binding constructed with {Binding RelativeSource={RelativeSource TemplatedParent}}.

因此,我决定明确地执行此操作...这将允许我设置 UpdateSourceTrigger(仍然不确定为什么它不默认为 PropertyChanged)

<TextBox Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Text, UpdateSourceTrigger=PropertyChanged}"....

而且,现在它正在运行。 TemplateBinding 甚至不公开这些属性....同样,不确定为什么

关于c# - TemplateBinding 不适用于文本框文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21030567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com