我创建了一个继承自 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。现在,如果我使用Canvas.SetLeft(myControl, 200)
移动一个已经添加到画布中的控件,则它将移动到默认情况下不可见的位置,并且滚动条也被禁用,因此无法看到该控件。现在,如果我向画布添加另一个控件,滚动条会正确显示,并且我可以通过滚动查看先前的控件。