سؤال

أحاول إنشاء بعض الوظائف حيث سيتم إخفاء شريط التطبيق الخاص بالتطبيق عندما أقوم بالتمرير لأسفل ItemsControl - لقد أرفقت معالج الحدث إلى سكرولفيور ولكن المشكلة التي أواجهها هي أن وظيفة جدا حساس.ما أعنيه بذلك هو أن شريط التطبيق يستمر في الظهور والاختباء عندما أتحرك لأعلى ولأسفل في القائمة.

معالج الأحداث الخاص بي-لدي حقل يسمى 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.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

قد ترغب أيضا في النظر في الرسوم المتحركة بحيث تنزلق بعيدا وتنزلق للخلف.

نصائح أخرى

المشكلة مع الحل الخاص بك هو أنه عند التمرير لأعلى أببار سوف تكون مخفية الواسي.هل حاولت إيسنترميديت من الحدث أرجس?سيكون خطأ عندما يتوقف التمرير عن التمرير وصحيح عندما يصل التمرير في النهاية.جرب الرمز أدناه.

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