WPF TextBox TextProperty元数据覆盖 [英] WPF TextBox TextProperty metadata override

查看:205
本文介绍了WPF TextBox TextProperty元数据覆盖的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何覆盖TextProperty 元数据以设置UpdateSourceTrigger.PropertyChanged 默认情况下,使用基础TextBox

How to override the TextProperty Metadata to set the UpdateSourceTrigger.PropertyChanged by default while using the functionality from the base TextBox Class

TextBox.OnTextPropertyChanged
TextBox.CoerceText

方法,当两个都提到时是私有的?

methods, when both mentioned are private ?

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));
...

推荐答案

您应该能够使用GetDefaultMetadata方法,该方法将使您能够访问引用私有方法的回调.

You should be able to use the GetDefaultMetadata method which will give you access to the callbacks that refer to the private methods.

以下内容对我有用:

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)); 
    }
}

这篇关于WPF TextBox TextProperty元数据覆盖的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆