我有一个大帆布。在casvas中,我在drage事件后面的代码中添加了textblock。每次添加文本块时,Scrollviewer都会设置/显示第一个textbloc。因此,我必须手动向上滚动到最后一个文本块。因此,我希望在添加新文本块后,在画布的最后一个元素上设置Scrollviewer。 XAML: -
<ScrollViewer x:Name="sv" HorizontalScrollBarVisibility="Auto" Margin="6,6,-835,66">
<Canvas x:Name="canvas" Height="450" Width="12000" ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollBarVisibility="Auto">
</Canvas>
</ScrollViewer>
C#背后的代码: -
private void OnDragDelta(object sender, DragDeltaGestureEventArgs e)
{
if (tb_conter > 24)
return;
TextBlock[] tb = new TextBlock[elemet];
for (int i = 0; i < elemet; i++)
tb[i] = new TextBlock();
currentPoint = e.GetPosition(this.ContentPanel);
double x = currentPoint.X - oldPoint.X;
if (x >= 100)
{
tb[tb_conter].SetValue(Canvas.LeftProperty, tb_canvasLeft);
tb[tb_conter].SetValue(Canvas.TopProperty, tb_canvasTop);
tb[tb_conter].Text = time_scale.ToString();
canvas.Children.Add(tb[tb_conter]);
time_scale++;
tb_conter++;
tb_canvasLeft += tb_canvasTop;
}
else
Debug.WriteLine(x.ToString());
}
答案 0 :(得分:0)
您需要ScrollViewer.ScrollToVerticalOffset方法。
最好还是在视图模型中将项添加到ObservableCollection<string>
并将其绑定到页面上的ListBox。