2011-10-01 9 views
5

डिफ़ॉल्ट निर्भरता संपत्ति मेटाडेटा को ओवरराइड करने के लिए कैसे करें। उदाहरण के लिए ; टेक्स्टबॉक्स के लिए टेक्स्ट प्रॉपर्टी। मैं इस कोड का उपयोगकैसे करें: एक निर्भरता संपत्ति के लिए मेटाडाटा ओवरराइड करें

  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(",","");   
    } 

लेकिन यह दोनों रन में (मिलता है, सेट)

कोई भी मेरी मदद कर सकते !!!: (((

+1

संभावित डुप्लिकेट [मैं विरासत निर्भरता संपत्ति का डिफ़ॉल्ट मान कैसे बदल सकता हूं?] (Http://stackoverflow.com/questions/5653364/how-can-i-change-the-default-value-of- एक विरासत-निर्भरता-संपत्ति) –

+0

मैं एक कॉन्स वैल्यू का उपयोग नहीं करता हूं। –

उत्तर

19

यहां कक्षा का एक उदाहरण प्राप्त होता है

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 निर्माण में जगह है: TextBoxText संपत्ति के लिए मेटाडाटा अधिभावी से टोर, साधारण कन्स्ट्रक्टर नहीं।

+0

धन्यवाद, मुझे यह कोड wpf में चाहिए। [{return text.replace();} se {text = value;}] –

+0

यह WPF कोड है। कस्टम नियंत्रण करने का यही तरीका है (यानी: UIElement से प्राप्त कक्षा के स्थिर निर्माता में मेटाडेटा ओवरराइड करना)। –

+0

पाठ संपत्ति प्राप्त करते समय मैं मूल्य कैसे बदलूं ?! –

संबंधित मुद्दे