我创建了一个自定义控件,只需在屏幕上绘制一个正方形网格。为此,它会覆盖OnRender方法并绘制矩形。
我已将此自定义控件添加到WPF窗口。但是,当我调整窗口大小时,隐藏了部分自定义控件。我想要发生的是滚动条出现,但是在添加滚动查看器后它没有做任何事情。
我已经在其他地方读过我应该实现的IScrollInfo,但这似乎要付出很多努力来做一些非常简单的事情。
如果有人能帮助我,我将不胜感激。
非常感谢,
马特
答案 0 :(得分:2)
ScrollViewer
可以滚动任意内容,因此您不需要实现IScrollInfo,除非您想支持逻辑滚动,即通过行而不是像素。
除非您的自定义控件实现MeasureOverride
,否则它不会参与布局的度量阶段,并且ScrollViewer
对于您希望可滚动区域不会很大。
以下是带有方格纸背景的可滚动Grid
的仅限XAML的示例:
<DockPanel>
<ScrollViewer Height="200" Width="250" HorizontalScrollBarVisibility="Visible">
<Grid Height="400" Width="400">
<Grid.Background>
<DrawingBrush x:Name="GridBrush"
Viewport="0,0,10,10" ViewportUnits="Absolute" TileMode="Tile">
<DrawingBrush.Drawing>
<DrawingGroup>
<GeometryDrawing Brush="#CCCCFF">
<GeometryDrawing.Geometry>
<RectangleGeometry Rect="0,0 10,1" />
</GeometryDrawing.Geometry>
</GeometryDrawing>
<GeometryDrawing Brush="#CCCCFF">
<GeometryDrawing.Geometry>
<RectangleGeometry Rect="0,0 1,10" />
</GeometryDrawing.Geometry>
</GeometryDrawing>
</DrawingGroup>
</DrawingBrush.Drawing>
</DrawingBrush>
</Grid.Background>
</Grid>
</ScrollViewer>
</DockPanel>
答案 1 :(得分:0)
ScrollViewer
将使用其子DesiredSize
作为是否需要滚动的决定因素。您的自定义控件是否覆盖Measure()
?发布自定义控件的代码可能需要进一步帮助。