2011-03-31 2 views
15

TextBox가 있습니다. 종속성 속성에 바인딩되어 있습니다. TextChangedCallBack 함수를 구현했습니다. 텍스트를 변경해야 textbox.ScrollToEnd()를 호출해야하지만 PropertiesChanged 함수가 정적이어야하므로 캔트 할 수 없습니다. 이 주변에 방법이 있을까요?PropertyChangedCallBack 사용하는 방법

static FrameworkPropertyMetadata propertyMetaData = new FrameworkPropertyMetadata("MyWindow", 
                         FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, 
                         new PropertyChangedCallback(TextProperty_PropertyChanged)); 

    public static readonly DependencyProperty TextProperty = DependencyProperty.Register("TextProperty", typeof(string), typeof(OutputPanel), 
                         propertyMetaData); 

    private void TextProperty_PropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e) 
    { 
     textbox.ScrollToEnd(); //An object reference is required for the non-static field. 
    } 

    public string Text 
    { 
     get 
     { 
      return this.GetValue(TextProperty) as string; 
     } 
     set 
     { 
      this.SetValue(TextProperty, value); 
      //textbox.ScrollToEnd(); // I originally called it here but I think it should be in the property changed function. 
     } 
    } 

감사합니다,

Eamonn

답변

22

DependencyObject는 이벤트를 발생시킨 객체입니다. obj을 필요한 유형으로 캐스팅해야합니다. 예 :

TextBox textbox = (TextBox)obj; 
textbox.ScrollToEnd();