我创建了一个继承自 WPF 的自定义画布控件Canvas
。我在主窗口中像这样使用它 -
<ScrollViewer
HorizontalScrollBarVisibility="Auto"
VerticalScrollBarVisibility="Auto">
<RTD:RTDesignerCanvas
Margin="5"
Background="White"
x:Name="canvas1"
Focusable="True"
AllowDrop="True">
</RTD:RTDesignerCanvas>
</ScrollViewer>
一切正常,但是当我尝试像这样设置控件的位置时
Canvas.SetTop(item, 200);
滚动条不可见,控件隐藏在某处。有趣的是,如果我向它添加另一个控件,滚动条是可见的,我可以向下滚动以查看前一个控件。
我试着用
base.InvalidateVisual();
base.UpdateLayout();
base.InvalidateArrange();
更改项目后Top
或Left
但没有任何反应;我是否遗漏了什么或者这是由于某些错误而发生的?
更新:
澄清一下,假设我有一个画布,其width
,height
为 100、100。现在,如果我移动一个控件(已经添加到画布中),Canvas.SetLeft(myControl, 200)
那么它将移动到默认情况下不可见的位置,并且滚动条也被禁用,所以没有办法看到该控件。
现在,如果我向 Canvas 添加另一个控件,则 ScrollBars 会正确显示,并且我可以通过滚动查看上一个控件。