У меня появилась потребность перетаскивания UserContol
по родительскому Grid
'y. Заметил что при перетаскивании контрола появляется задержка визуализации, не смотря на то что Margin
у UserControl
уже присвоен окончательный, сам контрол еще не закончил движение.
Я решил проверить тот же принцип работы но уже на Window
. Там пример работает идеально и отклонение даже если и есть то +-1px.
Синий круг это UserControl который находится на сером Grid
Красный круг это отдельное окно которое перемещается с помощью this.DragMove()
Помогите разобраться с этой проблемой, пожалуйста! Архив с самим проектом
Я упростил код XAML контрола UserControl1, изменил механизм пересчёта его положения при перемещении - и у меня на ПК при перемещении контрола и окна почти не заметно разницы. UserContol.xaml.cs:
/// <summary>
/// Логика взаимодействия для UserControl1.xaml
/// </summary>
public partial class UserControl1 : Grid
{
Point _startPoint;
Vector _startTransform;
public UserControl1()
{
InitializeComponent();
}
private void Grid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
// Сохраняем начальные значения до того как захватываем мышь
_startPoint = e.GetPosition(Parent as Window);
_startTransform = new Vector(controlTranslateTransform.X, controlTranslateTransform.Y);
CaptureMouse();
}
private void Grid_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
ReleaseMouseCapture();
}
private void Grid_MouseMove(object sender, MouseEventArgs e)
{
if (IsMouseCaptured)
{
Vector offset = Point.Subtract
(e.GetPosition(Parent as Window), _startPoint);
controlTranslateTransform.X = (_startTransform + offset).X;
controlTranslateTransform.Y = (_startTransform + offset).Y;
}
}
}
UserControl.xaml:
<Grid
x:Class="WpfApp3.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
MouseLeftButtonDown="Grid_MouseLeftButtonDown"
MouseLeftButtonUp="Grid_MouseLeftButtonUp"
MouseMove="Grid_MouseMove">
<Grid.RenderTransform>
<TranslateTransform x:Name="controlTranslateTransform"/>
</Grid.RenderTransform>
<Ellipse Fill="Blue"/>
<Label
Content="U"
FontSize="40"
FontWeight="Bold"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Foreground="LightPink"/>
</Grid>
Переделанный проект выложил тут (VS 2019): https://cloud.mail.ru/public/6mBA/dV2GMwY3o
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть проект библиотеки в котором необхдимо хранить XML файлСтруктура такова:
Есть код, который создаёт объекты с компонентом Image, в котором я хочу заменить Source Image на один из дефолтных, через код