c# - 您能否将装饰器的位置附加到装饰元素左上角以外的任何位置?

标签 c# wpf adorner adornerlayer

除了左上点之外,我找不到任何方法将装饰器固定到被装饰元素的另一点。我知道您可以通过实现 ArrangeOverride 相对于这一点移动装饰器,但坐标系统始终基于左上角。

有什么想法吗?

最佳答案

据我所知没有。但是定位 Adorner 内容的可能性比 ArrangeOverride 多一种:AdornerPanel Class .有了它 AdornerPlacementCollection Methods

  • PositionRelativeToAdornerHeight 方法
  • PositionRelativeToAdornerWidth 方法
  • PositionRelativeToContentHeight 方法
  • PositionRelativeToContentWidth 方法
  • SizeRelativeToAdornerDesiredHeight 方法
  • SizeRelativeToAdornerDesiredWidth 方法
  • SizeRelativeToContentHeight 方法
  • SizeRelativeToContentWidth 方法

您可以确定装饰器相对于装饰器或内容的位置和大小,例如有一个因素和一个偏移量。请参阅此示例,将 Adorner 放置在装饰控件上方:

// create AdornerPanel and add your adorner content
AdornerPanel adornerPanel = new AdornerPanel();
adornerPanel.Children.Add(yourAdornerContent);

// set placements on AdornerPanel
AdornerPlacementCollection placement = new AdornerPlacementCollection();
placement.PositionRelativeToAdornerHeight(-1, 0);
placement.PositionRelativeToAdornerWidth(1, 0);
AdornerPanel.SetPlacements(adornerPanel, placement);

// create Adorner with AdornerPanel inside
Adorner adorner = new YourAdorner(adornedElement)
{
    Child = adornerPanel
};

关于c# - 您能否将装饰器的位置附加到装饰元素左上角以外的任何位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19161949/

相关文章:

c# - 创建一个覆盖层以禁用所有其他表单元素

WPF 装饰器变换

c# - LINQ to SQL 和有序结果的运行总计

c# - EMF 文件的 DPI

WPF 将视觉画笔的视觉对象绑定(bind)到不同的窗口

c# - 如何使用 RoutedCommand.Name 属性?

c# - 4.6 新UI 如何更改按钮图像?

c# - 在 Owin 中间件中重写响应

c# - 带有窗口的石头剪刀布游戏

c# - 如何创建不随 AdornedElement 缩放的装饰器?