Прокрутка не происходит, когда я панорамирую пользовательский элемент управления. У меня есть настраиваемый элемент управления, полученный из Panel, я поместил его в файл ScrollViewer
. И я установил ManipulationMode
для своего пользовательского элемента управления как «Все». И активировал ManipulationDelta
и изменил VericalOffset
и HorizontalOffSet
, используя метод ChangeView
в ScrollViewer
. VerticalOffSet и HorizontalOffSet установлены для моей панели на основе моего панорамирования, но в представлении нет никаких изменений, ScrollViewer
удерживает панель.
Я устал от многих способов, но проблема не решена. Запустил ViewChanging
и установил VerticalOffSet
и HorizontalOffSet
. Запустил ManipulationDelta
для ScrollViewer
и установил VerticalOffSet
и HorizontalOffSet
. Запустил ManipulationStaring
, ManipulationDelta
и ManipulationCompleted
, установил VerticalOffSet
и HorizontalOffSet
для CustomPanel и ScrollViewer
.
<Grid>
<ScrollViewer x:Name="scrollViewer"
HorizontalScrollBarVisibility="Visible"
VerticalScrollBarVisibility="Visible"
HorizontalAlignment="Left"
VerticalAlignment="Top">
<local:CustomPanel x:Name="customPanel" Height="800" Width="900"
ManipulationMode="All"/>
</ScrollViewer>
</Grid>
private void OnContainerOnManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
{
if (scrollViewer!= null)
{
if (scrollViewer.HorizontalScrollMode == ScrollMode.Disabled && scrollViewer.VerticalScrollMode == ScrollMode.Disabled)
return;
var verticalOffset = e.Delta.Translation.Y;
var horizontalOffset = e.Delta.Translation.X;
this.scrollViewer.ChangeView(null, VerticalOffset - verticalOffset, null, true);
this.scrollViewer.ChangeView(HorizontalOffset - horizontalOffset, null, null, true););
e.Handled = true;
}
}
Примечание. У меня есть несколько фиксированных строк в нашей пользовательской сетке (CustomPanel), при прокрутке без установки ManipulationMode
фиксированные строки мерцают, поэтому только я активировал ManipulationDelta
.
Любое предложение по этому поводу?