Я перетаскиваю различные StackPanel
s внутри холста, но когда я перетаскиваю другой StackPanel
внутри того же холста, он перекрывает его, и тот захватывает тот, который я перетаскиваю в данный момент. Я пытаюсь решить эту проблему с Zindex
. Это правильный путь?
Мой код пока:
private void UIElement_OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
StackPanel sp = (StackPanel)sender;
Panel.SetZIndex(sp, 99999);
sp.Background = Brushes.Red;
Console.WriteLine(Panel.GetZIndex(sp));
}
private void UIElement_OnMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
StackPanel sp = (StackPanel)sender;
Panel.SetZIndex(sp, -10);
sp.Background = Brushes.Green;
Console.WriteLine(Panel.GetZIndex(sp));
}
private void UIElement_OnMouseMove(object sender, MouseEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed)
{
StackPanel sp = (StackPanel) sender;
SymbolModel sm = sp.DataContext as SymbolModel;
Point pos = e.GetPosition(SymbolViewControl);
if (pos.X > 10 && pos.Y > 10)
{
sm.CanvasTop = pos.Y-10;
sm.CanvasLeft = pos.X-10;
}
}
}
Цвета и сценарий предназначены только для тестирования и, похоже, работают так, как задумано. Zindex настроен правильно при нажатии кнопки и при нажатии кнопки вверх, но элементы, кажется, не заботятся.
Спасибо за ваше время!