您可以将装饰者的位置附加到装饰元素左上角以外的任何位置吗?

时间:2013-10-03 14:31:56

标签: c# wpf adorner adornerlayer

我找不到任何方法将装饰器固定到装饰元素的另一个点,而不是左上角点。我知道您可以通过实施ArrangeOverride来相对于此点移动装饰器,但是合作系统始终基于左上角。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

不是我知道的。但是,除了ArrangeOverride之外,还有一种方法可以定位Adorner内容:AdornerPanel Class。随着AdornerPlacementCollection Methods

  • PositionRelativeToAdornerHeight Method
  • PositionRelativeToAdornerWidth方法
  • PositionRelativeToContentHeight方法
  • PositionRelativeToContentWidth方法
  • SizeRelativeToAdornerDesiredHeight Method
  • 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
};

答案 1 :(得分:1)