问题
:是否可以创建
AdornerDecorator
那只需要
Adorner
我想要它
AdornerLayer
?
public class SimpleCircleBehavior : Behavior<TextBox>
{
private SimpleCircleAdorner sca;
protected override void OnAttached()
{
base.OnAttached();
AssociatedObject.Loaded += new RoutedEventHandler(AssociatedObject_Loaded);
}
void AssociatedObject_Loaded(object sender, RoutedEventArgs e)
{
sca = new SimpleCircleAdorner(AssociatedObject);
AdornerLayer.GetAdornerLayer(AssociatedObject).Add(sca);
}
}
public class SimpleCircleAdorner : Adorner
{
// Be sure to call the base class constructor.
public SimpleCircleAdorner(UIElement adornedElement)
: base(adornedElement)
{
}
// A common way to implement an adorner's rendering behavior is to override the OnRender
// method, which is called by the layout system as part of a rendering pass.
protected override void OnRender(DrawingContext drawingContext)
{
Rect adornedElementRect = new Rect(this.AdornedElement.DesiredSize);
// Some arbitrary drawing implements.
SolidColorBrush renderBrush = new SolidColorBrush(Colors.Green);
renderBrush.Opacity = 0.2;
Pen renderPen = new Pen(new SolidColorBrush(Colors.Navy), 1.5);
double renderRadius = 5.0;
// Draw a circle at each corner.
drawingContext.DrawEllipse(renderBrush, renderPen, adornedElementRect.TopLeft, renderRadius, renderRadius);
drawingContext.DrawEllipse(renderBrush, renderPen, adornedElementRect.TopRight, renderRadius, renderRadius);
drawingContext.DrawEllipse(renderBrush, renderPen, adornedElementRect.BottomLeft, renderRadius, renderRadius);
drawingContext.DrawEllipse(renderBrush, renderPen, adornedElementRect.BottomRight, renderRadius, renderRadius);
}
}
我该怎么加
装饰设计师
里面
TextBox
把那个装饰品放在那层里面?当然,在行为内部,设计师不应该关心添加
装饰设计师
在
全部的
有装饰的元素…
最好只有
这
装饰工应该去那里,而不是偷走所有其他的装饰工。
你无法预测
创建装饰器时
装饰出现在哪一层…
除非你
创造
装饰设计师
. 就是这样!你不能提前知道
哪层
它们看起来并不是这样设计的。这让整件事变得非常痛苦。
假设您正在创建
只对
文本框
. 使之发挥作用
文本框
你需要
装饰设计师
把你的装饰品放在
文本框
.
-
如何创建
装饰设计师
要包装要装饰的元素?哦,是的,就是这样
不
可能(我不知道)在创造装饰。
-
如果你设法创造
装饰设计师
你还有问题:它
偷走所有的装饰品
在childs中,把它放在这一层。再一次…世界跆拳道联盟!我怎么能假定所有子元素装饰器,即使是我没有创建的子元素装饰器,都应该转到这个层?
换言之,如果你没有特别指出,就无法控制你的装饰器出现在哪一层。
了解所有子元素及其装饰
也.这就是全部
非常了解
当创造无辜的花洒。
解决方法:
-
创造
特殊的
装饰设计师
抓住
只有我们知道我们想要的装饰品
,其他的则会放在下一个“全球”装饰设计师身上。
-
以某种方式使装饰器用这个装饰器包装装饰元素的内部,并添加我们的装饰器
只是
在这个装饰里面。
我不喜欢这种解决方法,但糟糕的设计决策有时需要非常丑陋的黑客…我想这次我们需要这个。