2017-09-26 68 views
0

我以前使用過附加屬性,這是對this question的最高響應。我用它作爲後臺進程輸出窗口的文本塊。但是我注意到,當我在滾動查看器中滾動時,滾動查看器停止滾動到底部。如何在中斷後連續滾動到scrollviewer MVVM的底部

我不知道如何確保滾動查看器繼續滾動到底部。請你可以提出爲什麼會出現這種情況的原因,或者我可能會如何解決這個問題,而無需使用代碼。

回答

1

您可以簡單地更改附加屬性來聽取TextBlockText所綁定的屬性更改,因此無論何時發生變化,您的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); 
    } 
} 
+0

的伎倆。 –