У меня есть холст на сетке внутри ScrollViewer.Когда 3 инструкции mycanvas.Children.Add (какой бы элемент мне ни понравился), за которыми следуют Canvas.SetLeft (weif, ptMouse.X) и Canvas.SetTop (weif, ptMouse.Y), соответствующий элемент заканчивается на Canvas, гдедолжно, кроме случаев, когда элемент является TextBox.Во всех случаях часть холста находится за пределами экрана (вне области просмотра), и я только прикрепляю небольшие объекты, которые хорошо вписываются в область просмотра, но когда я присоединяю TextBox, полосы прокрутки ScrollViewer неизменно немного смещаются и, таким образом, вызывают TextBoxчтобы быть позиционированным со смещением к точке щелчка мыши.Если я переместу полосы прокрутки обратно в прежнее положение, TextBox будет расположен в точке, по которой щелкнули.Событие прокрутки происходит, когда я добавляю TextBox на холст, но не когда я добавляю изображение или TextBlock того же размера в ту же позицию на холсте.Что я делаю неправильно.Заранее спасибо.
void mycanv_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
Canvas acanvas = sender as Canvas;
ptMouse = e.GetPosition(acanvas);
...
case ToolType.InsertText:
mytbox = new TextBox();
mytbox.FontSize = (double)cbFontSize.SelectedItem;
mytbox.FontFamily = (FontFamily)cbFontFamily.SelectedItem;
mytbox.Background = Brushes.Transparent;
mytbox.Foreground = (Brush)mypl.Fill;
mytbox.BorderThickness = new Thickness(1);
mytbox.TextWrapping = TextWrapping.Wrap;
isDrawingTextBox = true;
acanvas.Children.Add(mytbox);
Canvas.SetLeft(mytbox, ptMouse.X);
Canvas.SetTop(mytbox, ptMouse.Y);