依存関係プロパティにバインドされた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();