Я пытаюсь создать пользовательский элемент управления. Я хочу нажать на кнопку, и появляется пользовательский элемент управления. Затем то, что я хочу:
- Затем я хочу нажать на этот пользовательский элемент управления и поставить его на позицию.
- Затем я снова нажимаю на кнопку, и появляется другой пользовательский элемент управления.
- Затем я нажимаю на новый пользовательский элемент управления и помещаю его в позицию.
Делаем это 4 или 5 раз, после чего сохраняем RenderTransformation в файле, и первая часть завершается.
Итак, часть моего кода (просто фиктивная):
Point _anchorPoint;
Point _currentPoint;
bool _isInDrag;
private readonly TranslateTransform _transform = new TranslateTransform();
public ucCustomizedUc(){InitializeComponent();}
private void uc_MouseDown(object sender, MouseButtonEventArgs e)
{
ucControl _uccontrol = sender as ucControl;
var _element = sender as FrameworkElement;
_anchorPoint = e.GetPosition(null);
if (_element!= null)
{
_element.CaptureMouse();
}
_isInDrag = true;
e.Handled = true;
_uccontrol.MouseDown -= uc_MouseDown;
_uccontrol.MouseMove += uc_MouseMove;
}
private void uc_MouseUp(object sender, MouseButtonEventArgs e)
{
ucControl _uccontrol = sender as ucControl;
if (!_isInDrag) return;
var _element = sender as FrameworkElement;
if (_element!= null)
{
_element.ReleaseMouseCapture();
}
_isInDrag = false;
e.Handled = true;
_uccontrol.MouseUp -= uc_MouseUp;
_uccontrol.MouseMove -= uc_MouseMove;
}
private void uc_MouseMove(object sender, MouseEventArgs e)
{
ucControl _uccontrol = sender as ucControl;
if (!_isInDrag) return;
_currentPoint = e.GetPosition(null);
_transform.X += _currentPoint.X - _anchorPoint.X;
_transform.Y += (_currentPoint.Y - _anchorPoint.Y);
_uccontrol.RenderTransform = _transform;
_anchorPoint = _currentPoint;
}
private void ButtonAdd_MouseDown(object sender, MouseButtonEventArgs e)
{
ucControl _uccontrol = new ucControl();
_uccontrol.MouseDown += uc_MouseDown;
_uccontrol.MouseUp += uc_MouseUp;
_uccontrol.Height = 50;
_uccontrol.Width = 50;
testgrid.Children.Add(_uccontrol);
}
}
}
И мой xaml:
<Grid Height="60" Background="White" VerticalAlignment="Top">
<StackPanel Orientation="Vertical" >
<StackPanel Orientation="Horizontal">
<Label Content="MyCustomzizedUserControl" Foreground="White" VerticalAlignment="Center" FontSize="30" FontWeight="Bold" Padding="5,0" VerticalContentAlignment="Center"/>
</StackPanel>
<StackPanel Orientation="Horizontal">
<Label Content="First step: Pick and Place" Foreground="White" VerticalAlignment="Center" FontSize="14" FontWeight="Bold" Padding="5,0" VerticalContentAlignment="Center"/>
</StackPanel>
</StackPanel>
</Grid>
<Grid x:Name="testgrid" Margin="0,60,0,0" Background="White">
<Image Source="/System/Pic/Background.png" IsHitTestVisible="False"/>
<Button x:Name="Add" MouseDown="ButtonAdd_MouseDown" HorizontalAlignment="Left" VerticalAlignment="Top" Height="50" Width="50"/>
</Grid>
</Grid>
Итак, моя проблема is:
Я нажимаю на кнопку и появляется пользовательский элемент управления (это работает). Затем, когда я нажимаю на пользовательский элемент управления и ставлю его на позицию (это работает). Я нажимаю на кнопку, и появляется новый пользовательский элемент управления (это работает). А теперь сложная часть: когда я нажимаю на новый пользовательский элемент управления и когда я двигаю мышь, новый пользовательский элемент управления исчезает, а старый начинает двигаться. Что-то не так с моей сеткой, но я не понимаю этого. Может быть, некоторые профи могут помочь этой ладье ie.
Спасибо