【问题标题】:WPF TextBox TextProperty metadata overrideWPF TextBox TextProperty 元数据覆盖
【发布时间】:2010-05-04 07:06:41
【问题描述】:

如何覆盖TextProperty 元数据来设置UpdateSourceTrigger.PropertyChanged 默认情况下,使用基础 TextBox 类中的功能时

TextBox.OnTextPropertyChanged
TextBox.CoerceText

方法,什么时候提到的都是私有的?

public class MyTextBox : System.Windows.Controls.TextBox
    {
        static MyTextBox()
        {

TextProperty.OverrideMetadata(typeof(TextBox), new FrameworkPropertyMetadata(
                string.Empty, FrameworkPropertyMetadataOptions.Journal | FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, 
                new PropertyChangedCallback(TextBox.OnTextPropertyChanged), 
                new CoerceValueCallback(TextBox.CoerceText), true, UpdateSourceTrigger.PropertyChanged));
...

【问题讨论】:

    标签: wpf textbox metadata overriding


    【解决方案1】:

    您应该能够使用 GetDefaultMetadata 方法,它可以让您访问引用私有方法的回调。

    以下内容对我有用:

    public class MyTextBox : TextBox
    {
        static MyTextBox()
        {
            var defaultMetadata = TextBox.TextProperty.GetMetadata(typeof(TextBox));
    
            TextBox.TextProperty.OverrideMetadata(typeof(MyTextBox), new FrameworkPropertyMetadata(
                string.Empty, FrameworkPropertyMetadataOptions.Journal | FrameworkPropertyMetadataOptions.BindsTwoWayByDefault,
                defaultMetadata.PropertyChangedCallback,
                defaultMetadata.CoerceValueCallback, 
                true, 
                System.Windows.Data.UpdateSourceTrigger.PropertyChanged)); 
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2014-03-12
      • 2014-11-19
      • 1970-01-01
      • 1970-01-01
      • 2020-06-03
      • 1970-01-01
      • 2011-01-23
      • 2012-08-25
      • 1970-01-01
      相关资源
      最近更新 更多