gpt4 book ai didi

wpf - 覆盖 TextBox.TextProperty 的默认值

转载 作者:行者123 更新时间:2023-12-04 06:32:07 27 4
gpt4 key购买 nike

我有一个派生自 TextBox 的自定义控件。而且我找不到覆盖默认 Text 值的方法。所以,简而言之 - 我希望 MyTextBox 中有一些特定的默认文本。

编码:

    public class MyTextBox : TextBox
{
static MyTextBox()
{
TextBox.TextProperty.OverrideMetadata(
typeof(MyTextBox),
new FrameworkPropertyMetadata("DEFAULT TEXT", OnTextChanged));
}

private static void OnTextChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
}
}

问题是该属性(奇怪地)包含“DEFAULT TEXT”值,但它没有显示在 UI 中(文本框为空)。

我究竟做错了什么?

最佳答案

TextBox 使用内部类来提供它的大部分功能。同一个类与 RichTextBox 共享。我相信 TextBox 在构造时假定 Text 将为空,因此 UI 不会更新。

要记住的一件事是,您已经有效地使 TextBox.OnTextPropertyChanged 方法被调用短路了。如果您想覆盖 PropertyChangedCallback,那么您可能需要手动调用 TextBox 版本以确保一切按预期工作。

您可以使用 TextProperty 访问基类的 PropertyChangedCallback。 GetMetadata(typeof(TextBox)) .PropertyChangedCallback。

您可以在实例构造函数中调用 TextBox 的 PropertyChangedCallback 以强制更新 UI。否则,您需要直接设置 Text。

关于wpf - 覆盖 TextBox.TextProperty 的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5272183/

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