2017-09-26 1 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

트릭을 수행합니다. –

관련 문제