2010-05-04 4 views
1

방법은 기본적으로 UpdateSourceTrigger.PropertyChanged 을 설정 TextProperty메타 데이터을 무시하는?WPF 텍스트 상자 TextProperty 메타 데이터 재정의

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

답변

3

개인 메서드를 참조하는 콜백에 액세스 할 수있는 GetDefaultMetadata 메서드를 사용할 수 있어야합니다.

다음은 나를 위해 일한 :

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)); 
    } 
} 
관련 문제