WPF 装饰器造的Rectangle绑不上事件
Rectangle _bodyRect;
private Path _border;
private VisualCollection _visuals;
private FrameworkElement _adornedElement;
public FocusAdorner(UIElement adornedElement) : base(adornedElement)
{
_adornedElement = this.AdornedElement as FrameworkElement;
_visuals = new VisualCollection(this);
CreateGrip();
AddEvents();
}
protected override Size ArrangeOverride(Size finalSize)
{
_bodyRect.Arrange(new Rect(2, 2, finalSize.Width - 4, finalSize.Width - 4));
RectangleGeometry rect = new RectangleGeometry(new Rect(0, 0, _adornedElement.ActualWidth + 2, _adornedElement.ActualHeight + 2));
_border.Data = rect;
_border.Arrange(new Rect(-1, -1, finalSize.Width + 2, finalSize.Height + 2));
return base.ArrangeOverride(finalSize);
}
private void CreateGrip()
{
_bodyRect = InitBodyRect();
if (_adornedElement is AddButton)
{
if ((_adornedElement as AddButton).IsEditing)
{
_bodyRect.IsHitTestVisible = false;
}
}
_bodyRect.Cursor = Cursors.Hand;
_border = new Path();
_border.StrokeThickness = 2;
_border.Stroke = new SolidColorBrush(Colors.Red);
_visuals.Add(_bodyRect);
_visuals.Add(_border);
}
private void AddEvents()
{
_bodyRect.PreviewMouseDown += BodyRectOnPreviewMouseDown;
}
private void BodyRectOnPreviewMouseDown(object sender, MouseButtonEventArgs mouseButtonEventArgs)
{
MessageBox.Show("aaaa");
}
private Rectangle InitBodyRect()
{
Rectangle rect = new Rectangle();
rect.Stroke = Brushes.Transparent;
SolidColorBrush b = new SolidColorBrush(Colors.Transparent);
rect.Fill = b;
return rect;
}
protected override void OnRender(DrawingContext drawingContext)
{
base.OnRender(drawingContext);
}
protected override Visual GetVisualChild(int index)
{
return _visuals[index];
}
protected override int VisualChildrenCount
{
get
{
return _visuals.Count;
}
}
这是我的代码,然后我想给_bodyRect绑定事件,不知道为什么总是绑定不上去,有没有大神指导一下,谢谢~