开发者

How to: Override Metadata for a Dependency Property

how to override default dependency property metadata. for example ;Text property for textbox. i use this code

           class UCTextBox : TextBox
       {
           public UCTextBox()
        {
       var defaultMetadata = TextBox.TextProperty.开发者_JS百科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(",","");           
    }

but this In both runs(get,set)

No one can help me!!!:(((


Here is an example of a class derived from TextBox overriding the metadata for the Text property:

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

Notice that the override is place in the static constructor, not the ordinary constructor.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜