2017-09-26 11 views
0

以前はthis questionの最上位の応答であった添付プロパティを使用しました。私は、バックグラウンドプロセスの出力ウィンドウであるテキストブロック上でそれを使用しました。しかし、私は、スクロールビューアの内部をスクロールすると、スクロールビューアがスクロールして底部に移動するのを止めることに気付きました。中断後にスクロールビューワ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

は、トリックを行います。 –

関連する問題