ar.gorgin
ar.gorgin

Reputation: 5022

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.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!!!:(((

Upvotes: 6

Views: 10973

Answers (1)

Rick Sladkey
Rick Sladkey

Reputation: 34250

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.

Upvotes: 23

Related Questions