WPF TextBox TextProperty元数据覆盖 [英] WPF TextBox TextProperty metadata override
本文介绍了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屋!
查看全文