Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用PropertyChangedCallBack_C#_Wpf_Dependency Properties_Propertychanged - Fatal编程技术网

C# 如何使用PropertyChangedCallBack

C# 如何使用PropertyChangedCallBack,c#,wpf,dependency-properties,propertychanged,C#,Wpf,Dependency Properties,Propertychanged,我有一个绑定到依赖性属性的TextBox,我实现了一个PropertyChangedCallBack函数,当文本更改时,我需要调用TextBox.ScrollToEnd(),但我不能,因为PropertChanged函数需要是静态的,有没有办法解决这个问题 static FrameworkPropertyMetadata propertyMetaData = new FrameworkPropertyMetadata ( "MyWindow", Framewo

我有一个绑定到依赖性属性的TextBox,我实现了一个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. 
    }
}

DependencyObject
是引发事件的对象。您需要将
obj
转换为所需的类型。例如

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