如何覆盖默认依赖属性元数据。
例如;文本框的 Text 属性。
我用这个代码
class UCTextBox : TextBox
{
public UCTextBox()
{
var defaultMetadata = TextBox.TextProperty.GetMetadata(typeof(TextBox));
TextBox.TextProperty.OverrideMetadata(typeof(UCTextBox),
new FrameworkPropertyMetadata(string.Empty,
FrameworkPropertyMetadataOptions.Journal |
FrameworkPropertyMetadataOptions.BindsTwoWayByDefault,
defaultMetadata.PropertyChangedCallback,
new CoerceValueCallback(CoerceText)
));
}
private static object CoerceText(DependencyObject d, object value)
{
return value.ToString().Replace(",","");
}
但这在两次运行中(get,set)
没有人能帮我!!!:(((
这是一个派生类的示例TextBox
覆盖元数据Text
财产:
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
public class MyTextBox : TextBox
{
static MyTextBox()
{
TextBox.TextProperty.OverrideMetadata(typeof(MyTextBox),
new FrameworkPropertyMetadata(string.Empty,
FrameworkPropertyMetadataOptions.BindsTwoWayByDefault |
FrameworkPropertyMetadataOptions.Journal,
null, /* property changed callback */
null, /* coerce value callback */
true, /* is animation prohibited */
UpdateSourceTrigger.LostFocus));
}
}
请注意,覆盖位于static
构造函数,不是普通的构造函数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)