0
我以前使用過附加屬性,這是對this question的最高響應。我用它作爲後臺進程輸出窗口的文本塊。但是我注意到,當我在滾動查看器中滾動時,滾動查看器停止滾動到底部。如何在中斷後連續滾動到scrollviewer MVVM的底部
我不知道如何確保滾動查看器繼續滾動到底部。請你可以提出爲什麼會出現這種情況的原因,或者我可能會如何解決這個問題,而無需使用代碼。
我以前使用過附加屬性,這是對this question的最高響應。我用它作爲後臺進程輸出窗口的文本塊。但是我注意到,當我在滾動查看器中滾動時,滾動查看器停止滾動到底部。如何在中斷後連續滾動到scrollviewer MVVM的底部
我不知道如何確保滾動查看器繼續滾動到底部。請你可以提出爲什麼會出現這種情況的原因,或者我可能會如何解決這個問題,而無需使用代碼。
您可以簡單地更改附加屬性來聽取TextBlock
的Text
所綁定的屬性更改,因此無論何時發生變化,您的ScrollViewer
都將滾動到底部。
用法:
<ScrollViewer HorizontalScrollBarVisibility="Auto" myApp:ScrollViewerAttachedProperties.ScrollToBottomOnChange="{Binding Logs}">
<TextBlock Text="{Binding Path=Logs}" />
</ScrollViewer>
附加屬性:
public static class ScrollViewerAttachedProperties
{
public static readonly DependencyProperty ScrollToBottomOnChangeProperty = DependencyProperty.RegisterAttached(
"ScrollToBottomOnChange", typeof(object), typeof(ScrollViewerAttachedProperties), new PropertyMetadata(default(ScrollViewer), OnScrollToBottomOnChangeChanged));
private static void OnScrollToBottomOnChangeChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs)
{
var scrollViewer = dependencyObject as ScrollViewer;
scrollViewer?.ScrollToBottom();
}
public static void SetScrollToBottomOnChange(DependencyObject element, object value)
{
element.SetValue(ScrollToBottomOnChangeProperty, value);
}
public static object GetScrollToBottomOnChange(DependencyObject element)
{
return element.GetValue(ScrollToBottomOnChangeProperty);
}
}
的伎倆。 –