Убрать эффект сжатия у ScrollViewer
Пишу под Windows Phone 8.1 (Universal app) и хочу избавиться от эффекта сжатия при использовании ScrollViewera. Например, находясь у края контента, потянуть в противоположную сторону, то весь контент "сожмется" обозначая недоступную область (см. пример).
Для чего это нужно?
Хочу создать страницу с механикой стартового экрана Windows Phone
Что я сделал?
Создал ScrollViewer, добавил ограничивающие элементы в начало и конец содержимого, запретил скроллинг выходящий за границы необходимой области в обработчике события scrollViewer_ViewChanging(object sender, ScrollViewerViewChangingEventArgs e)
.
.xaml
<Grid Name="root">
<ScrollViewer x:Name="scrollViewer" HorizontalScrollBarVisibility="Hidden"
HorizontalScrollMode="Enabled"
HorizontalContentAlignment="Left"
HorizontalSnapPointsType="MandatorySingle"
ViewChanging="scrollViewer_ViewChanging">
<StackPanel Name="panel" Orientation="Horizontal" HorizontalAlignment="Left">
<Border x:Name="leftSide" Background="Red" Width="{Binding ElementName=root, Path=ActualWidth}" />
<Border x:Name="menuBorder" Background="White" Width="{Binding ElementName=root, Path=ActualWidth}" />
<Border x:Name="contentBorder" Background="Bisque" Width="{Binding ElementName=root, Path=ActualWidth}" />
<Border x:Name="rightSide" Background="Red" Width="{Binding ElementName=root, Path=ActualWidth}" />
</StackPanel>
</ScrollViewer >
</Grid>
.cs
private void МainЗage_Loaded( object sender, RoutedEventArgs e)
{
scrollViewer.ChangeView(leftSide.Width,0,1);
}
private void scrollViewer_ViewChanging(object sender, ScrollViewerViewChangingEventArgs e)
{
if (e.NextView.HorizontalOffset <= leftSide.Width)
{
scrollViewer.CancelDirectManipulations();
//scrollViewer.ChangeView(leftSide.Width,0,1,true);
}
else if (e.NextView.HorizontalOffset >= leftSide.Width + menuBorder.Width + contentBorder.Width)
{
scrollViewer.CancelDirectManipulations();
//scrollViewer.ChangeView(eftSide.Width + menuBorder.Width + contentBorder.Width,0,1,true);
}
}
Такой код работает, но проскакивают артефакты в виде скачков содержимого, пробовал и закомментированный код, такой же эффект. Расскажите как исправить мой вариант или подскажите другой подход.