문제

내가 만들려고 일부 기능은 응용 프로그램의 AppBar 숨기 때 나는 아래로 스크롤하는 ItemsControl -은 내가 있는 이벤트 처리기에 ScrollViewer 하지만 문제 내가 직면하는 기능은 매우 민감한.내가 무엇을 의미하는 것은 바지를 보여주는 숨기고 때 나는 아래로 이동 목록입니다.

내 이벤트 핸들러가라는 필드 scrollPoint 는 저장하는 마지막 스크롤 수직 오프셋이 있습니다.

private void pushScroll_ViewChanged(object sender, ScrollViewerViewChangedEventArgs e)
        {
            var scrollViewer = (ScrollViewer)sender;

            if (scrollViewer.VerticalOffset < scrollPoint)
            {
                bottomBar.Visibility = Visibility.Visible;
            }
            else
            {
                bottomBar.Visibility = Visibility.Collapsed;
            }


            scrollPoint = scrollViewer.VerticalOffset;
        }

내 템플릿 ItemsControl

<ItemsControl.Template>
                    <ControlTemplate>
                        <ScrollViewer x:Name="pushScroll" VerticalScrollMode="Enabled" BringIntoViewOnFocusChange="True" ViewChanged="pushScroll_ViewChanged">
                            <ItemsPresenter />
                        </ScrollViewer>
                    </ControlTemplate>
                </ItemsControl.Template>
도움이 되었습니까?

해결책

에 대한 생각을 구현하는 타이머입니다.그래서 당신이 할 수 있는 스크롤 1/2 전에 두 번째 앱 바이 돌아온다.그러나,그것은 거의 사라지는 즉시 스크롤.

http://msdn.microsoft.com/en-us/library/system.timers.timer.aspx

수도 있습을 보고 싶으로 애니메이션은 그래서 그리고 미끄럼다.

다른 팁

문제와 솔루션을 때 당신은 스크롤 appbar 항상할 수 있습니다.았다고 했습 IsIntermediate 이벤트 args?그것은 거짓 스크롤 중지 스크롤과 진실한 때에 스크롤 끝에 도달.려고 아래 코드입니다.

private async void scrollViewer_ViewChanged(object sender, ScrollViewerViewChangedEventArgs e)
    {
        if (e.IsIntermediate)
        {
            this.BottomAppBar.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
        }
        else
            this.BottomAppBar.Visibility = Windows.UI.Xaml.Visibility.Visible;

    }
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top