Не удается правильно установить положение созданных во время выполнения элементов управления в положение курсора в vs [C#, WPF]
Я закончил создание простой функции управления перетаскиванием и позже обнаружил, что она работает только с разработанными/созданными элементами управления, но не с элементами управления временем выполнения. Когда я нажимаю/удерживаю элемент управления во время выполнения, его позиция не устанавливается правильно в положение моего курсора, он устанавливается в правом нижнем углу немного далеко от моего курсора, но созданные элементы управления работают нормально. Я думаю, что неправильно добавляю элементы управления временем выполнения в свою сетку. Вот мой xml, я добавляю свои элементы управления временем выполнения в displaygrid.
<Window x:Class="MN.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:MN" mc:Ignorable="d" Title="MainWindow" Height="350" Width="525" WindowStartupLocation="CenterScreen" Topmost="True" ResizeMode="NoResize" Background="{x:Null}" AllowsTransparency="True" WindowStyle="None"> <Grid x:Name="displaygrid"> <Rectangle Fill="#FFF4F4F5" Stroke="Black"> <Rectangle.Effect> <BlurEffect Radius="25"/> </Rectangle.Effect> </Rectangle> <ListBox x:Name="tablist" Background="{x:Null}" FontSize="48" SelectionChanged="tablist_SelectionChanged"/> </Grid> </Window>
Я добавил свой контроль времени выполнения следующим образом
TextBlock newctrl = new TextBlock(); displaygrid.Children.Add(newctrl); newctrl.Width = ctrl.width; newctrl.Height = ctrl.height; newctrl.Margin = new Thickness(ctrl.left, ctrl.top, 0, 0); newctrl.Text = ctrl.text; active_ctrls.Add(newctrl); newctrl.PreviewMouseDown += enable_ctrldrag;
И сделал это, чтобы переместить мой контроль на мой курсор
private bool MouseHook_OnMouseMove(int x, int y) // WinputManager Library { if (_selctrl != null) { //_selctrl.Margin = new Thickness(x, y, 0, 0); _selctrl.Margin = new Thickness(Mouse.GetPosition(this).X, Mouse.GetPosition(this).Y, 0, 0); } return false; }
Что я уже пробовал:
Сделал новый проект, протестировал и выяснил свою проблему + я не использовал никаких библиотек, когда тестировал.