【发布时间】:2010-06-17 11:56:52
【问题描述】:
我创建了一个继承自 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 添加另一个控件,滚动条会正确显示,并且我可以通过滚动看到上一个控件。
【问题讨论】:
标签: .net wpf canvas custom-controls scrollviewer