gpt4 book ai didi

c# - 从 AdornerLayout 或 Adorner 或装饰控件访问 AdornerPanel?

转载 作者:行者123 更新时间:2023-11-30 14:37:54 24 4
gpt4 key购买 nike

我正在尝试添加一个简单的文本 block 作为控件的装饰。但我希望它刚好位于我装饰的控件上方。

这是装饰创建(问题不在于此代码):

public void AddLabelDecoration()
{
AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(this);

TextBlock textBlockMarkTooltipContent = new TextBlock();
textBlockMarkTooltipContent.Text = "Test Label Adorner";

_labelAdornerMarkTooltipContentAdorner = new Adorner(this)
{
Child = textBlockMarkTooltipContent
};

adornerLayer.Add(_labelAdornerMarkTooltipContentAdorner);
}

我无法做到的是装​​饰的定位,位于装饰控件之上。我想使用 this MSDN code sample ,它利用 AdornerPanel 来进行定位...

但是我还没有弄清楚如何访问 AdornerPanel 对象以应用此 MSDN 代码示例...无论是从我的装饰控件、AdornedLayout 还是 Adorner...

我承认我不清楚 AdornerPanel 和 AdornerLayout 之间的 WPF 类层次结构。

感谢任何帮助。

最佳答案

public void AddLabelDecoration()
{
AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(this);

TextBlock textBlockMarkTooltipContent = new TextBlock();
textBlockMarkTooltipContent.Text = "Test Label Adorner";

AdornerPanel labelAdornerAdornerPanel = new AdornerPanel();

// add your TextBlock to AdornerPanel
labelAdornerAdornerPanel.Children.Add(textBlockMarkTooltipContent);

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

// create Adorner with AdornerPanel inside
_labelAdornerMarkTooltipContentAdorner = new Adorner(this)
{
Child = labelAdornerAdornerPanel
};

adornerLayer.Add(_labelAdornerMarkTooltipContentAdorner);
}

关于c# - 从 AdornerLayout 或 Adorner 或装饰控件访问 AdornerPanel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8787202/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com