WPF 装饰器造的Rectangle绑不上事件

dachuyin 2017-09-28 07:37:58
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绑定事件,不知道为什么总是绑定不上去,有没有大神指导一下,谢谢~
...全文
740 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
小恒丶 2017-09-29
  • 打赏
  • 举报
回复
加进去设置在canvas里面的位置 新控件.SetValue(Canvas.LeftProperty, (double)位置); 新控件.SetValue(Canvas.TopProperty, (double)位置);
  • 打赏
  • 举报
回复
引用 1 楼 dachuyin 的回复:
这个问题我解决了,有没有大神知道 我给canvas上面new了一个新的空件,然后canvas.children(新控件) 然后取控件的位置都是NaN
不获取Location,而是获取canvas的left与top
dachuyin 2017-09-28
  • 打赏
  • 举报
回复
这个问题我解决了,有没有大神知道 我给canvas上面new了一个新的空件,然后canvas.children(新控件) 然后取控件的位置都是NaN
目录 WPF基础入门 ........................................................................................................................................ 3 1. WPF基础之体系结构 ................................................................................................................... 3 2. WPF基础之 XAML.......................................................................................................................... 9 3. WPF基础之基元素 ..................................................................................................................... 23 4. WPF基础之属性系统 ................................................................................................................. 26 5. WPF基础之路由事件 ................................................................................................................. 34 6. WPF基础之布局系统 ................................................................................................................. 47 7. WPF基础之样式设置和模板化 ................................................................................................. 52 8. 详谈WPF开发中的数据虚拟化 ................................................................................................ 66 XAML语法 ........................................................................................................................................... 76 1. XAML 语法术语 .......................................................................................................................... 76 2. 代码隐藏和XAML ....................................................................................................................... 84 3. XAML 和自定义类 ....................................................................................................................... 85 4. 标记扩展和XAML ....................................................................................................................... 89 5. XAML 命名空间和命名空间映射 ............................................................................................... 92 6. WPF名称范围 ............................................................................................................................ 94 WPF控件开发 ...................................................................................................................................... 97 1. WPF控件开发之控件概述 ......................................................................................................... 97 2. 使用XAML 创建按钮 ................................................................................................................ 105 3. WPF控件库之BUTTON ................................................................................................................ 116 4. WPF控件库之MENU ................................................................................................................... 117 5. WPF控件库之LABLE ................................................................................................................. 122 6. WPF控件库之TOOLBAR .............................................................................................................. 123 7. WPF控件开发之自定义控件 ................................................................................................... 126 8. WPF控件开发之装饰器 ........................................................................................................... 143 WPF数据定 .................................................................................................................................... 146 1. 数据定概述 ......................................................................................................................... 146 2. WPF数据定之定源 ........................................................................................................... 168 3. WPF数据定之数据模板 ....................................................................................................... 170 4. WPF数据定之定声明 ....................................................................................................... 185 5. 实例一:定到 ADO.NET 数据源 .......................................................................................... 189 6. 实例二:定到 LINQ 查询的结果 ........................................................................................ 190 WPF图形和多媒体开发 .................................................................................................................... 191 微软WPF应用 第 2 页 共 259 页 1. WPF 图形动画和媒体概述 ...................................................................................................... 191 2. WPF的图形呈现....................................................................................................................... 196 3. WPF的图像处理....................................................................................................................... 210 4. WPF的三维图形应用 ............................................................................................................... 224 5. WPF的三维变换应用 ............................................................................................................... 234 6. WPF的动画开发....................................................................................................................... 243 7. WPF的多媒体开发 ................................................................................................................... 255

8,756

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧