WPF
我在ScrollViewer中的Grid中有一个控件A(一个inkcanvas) . 控制器A比物理窗口高,因此ScrollViewer正确添加垂直滚动条,可以通过向下滚动查看整个控件 . 当使用控件B(另一个墨水扫描)连接Adorner时,为了控制A,向下滚动显示要在屏幕底部切断的Adorner . 也就是说,Adorner没有完全覆盖装饰元素和/或在滚动时不向下延伸 .
如何让Adorner(控件)完全覆盖装饰元素并尊重ScrollViewer . (我需要在Adorner控件的像素和ScrollViewer中的装饰元素之间进行一对一的匹配) .
TIA
编辑#1:Adorner中设置InkCanvas背景的关键线是
_inkcanvas.Background = CreateGrid();
public InkCanvasTextAdorner(InkCanvas element)
: base(element)
{
_element = element;
_visuals = new VisualCollection(this);
_inkcanvas = new InkCanvas();
_inkcanvas.Background = CreateGrid();
_visuals.Add(_inkcanvas);
AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(element);
adornerLayer.Add(this);
}
如果使用InkCanvas(如上所述),Adorner的背景将被剪裁在底部 . 然而,装饰控件确实继续在装饰元素的底部 .
但是,如果使用Canvas而不是InkCanvas,则Adorner的背景会延伸到装饰元素的底部 .
怎么了?
1 回答
我猜测Background属性与Canvas而不是InkCanvas扩展到物理屏幕的区别可能是因为Canvas继承自Panel而InkCanvas没有 . 基于Canvas背景确实做我需要的发现,我发现下面的代码确实完成了我想要的东西 - 画布允许看到它下面的图层的图像然后发布InkCanvas将接受笔画的线条网格 . 一切都很好 :)
看起来像这样: