其他分享
首页 > 其他分享> > 可以将装饰器的位置附加到装饰元素左上角以外的任何位置吗?

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

作者:互联网

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

有任何想法吗?

解决方法:

从来没听说过.但是,比ArrangeOverride定位Adorner内容的可能性更大:AdornerPanel Class.使用的是AdornerPlacementCollection Methods

> 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
};

标签:adorner,adornerlayer,wpf,c
来源: https://codeday.me/bug/20191122/2061681.html