Как использовать PropertyChangedCallBack

У меня есть текстовое поле, привязанное к свойству dependancy, я реализовал функцию PropertyChangedCallBack, когда текст изменяется, мне нужно вызвать textbox.ScrollToEnd () но я не могу, так как функция PropertChanged должна быть статической, есть ли способ обойти это?

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. 
        }
    }

спасибо,

Аминь

1 ответов


на DependencyObject - это объект, который вызвал событие. Вам нужно бросить obj к типу вам. Е. Г.

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