我正在处理 WPF 中的一个自定义控件,该控件通过调用一个以自身为访问者的访问函数来实现 OnRender。该控件实现了适当地绘制线条、圆圈等的访问者界面。没有子控件。
这一切都有效,当控件呈现时,我可以看到从 OnRender 调用中呈现的基元。
但是,我正在努力控制由此产生的布局。Image 控件完全符合我的要求。我如何复制这种行为?具体来说:
- 如果用户没有指定宽度或高度,我想设置控件的呈现宽度/高度(在我的构造函数中或从另一个控制布局的函数中)。
- 如果用户将宽度或高度设置为特定值,我想转换我的绘图以保留控件和绘图的纵横比。
我正在尝试使用 MeasureOverride 函数来实现我想要的行为,但我没有得到任何结果。我的控件布局为零宽度/高度,然后我的所有绘图都绘制在相邻控件的顶部。到目前为止,这是我正在尝试的,希望这说明了我正在尝试做的事情:
protected override Size MeasureOverride(Size constraint)
{
SymbolLayout symbol = new SymbolLayout(this);
component.LayoutSymbol(symbol);
Point b1 = MapToPoint(symbol.LowerBound);
Point b2 = MapToPoint(symbol.UpperBound);
return new Size(b2.X - b1.X, b2.Y - b1.Y);
}
我什至不确定 MeasureOverride 是否是用于完成此任务的正确功能...