إخفاء شريط التطبيقات على التمرير
-
21-12-2019 - |
سؤال
أحاول إنشاء بعض الوظائف حيث سيتم إخفاء شريط التطبيق الخاص بالتطبيق عندما أقوم بالتمرير لأسفل 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;
}