3

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

有任何想法吗?

4

2 回答 2

2

从来没听说过。但是定位 Adorner 内容的可能性比 ArrangeOverride 多:AdornerPanel Class。使用它的AdornerPlacementCollection 方法

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

您可以确定 Adorner 相对于装饰器或内容的位置和大小,例如使用因子和偏移量。请参阅此示例以将 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
};
于 2013-10-03T18:49:09.027 回答
1

这个解决方案对我来说是完美的 http://blogs.telerik.com/xamlteam/posts/08-05-22/wpf-series-creating-generic-adorner.aspx

于 2015-05-28T15:12:04.697 回答