【问题标题】:Scrolling content with negative margins以负边距滚动内容
【发布时间】:2011-05-17 13:03:04
【问题描述】:

我已经从 Windows 窗体生成了 XAML 文件,并且该过程计算了右边距和下边距,因为它们在窗体中不存在。我有这个输出:

<Grid>
    <TextBox Width="129" Height="18" Margin="36,46,278,686" />
    ...
    <TextBox Width="54" Height="18" Margin="345,705,83,31" />
    <TextBox Width="54" Height="18" Margin="345,728,83,8" />
    <TextBox Width="54" Height="18" Margin="345,770,83,-34" /> 
    ...
</Grid>

问题是网格的内容太大了,即使对于设计者来说也是如此,所以在win表单中会生成滚动条。但是,在 WPF 中并非如此,因此我尝试在其周围添加 ScrollViewer。但它只会向下滚动到具有正下边距的内容。具有负边距的控件不会在任何地方显示。

感谢任何想法如何解决这个问题。

【问题讨论】:

    标签: c# wpf scroll


    【解决方案1】:

    Grid 不适合此任务。如果您要自己进行定位,则应使用Canvas,然后使用Canvas.LeftCanvas.Top 进行定位。您不需要BottomRight 值,因为您似乎知道WidthHeight

    我相信您也应该能够在Canvas 对象周围使用ScrollViewer

    【讨论】:

    • 我已经尝试过了,但是我的元素仍然不可见。问题是 Canvas 的高度大约为 500,而元素的 Canvas.Top 大约为 1000。如果我将其缩小,我的控件将过于密集。
    • 好吧,如果您将Canvas.Top 的值设置为 1000,那么您将离开几乎所有应用程序的屏幕(认为正常的全屏应用程序的大小将小于 1280x1024 )。因此,如果您出于某种原因必须将元素放置在远离原点的位置,那么您需要在 Canvas 周围添加一个 ScrollViewer 并将 Canvas 的大小设置为足够大以包围所有元素.
    • 做到了,我将 ScrollViewer 高度设置为 500 并解决了它。谢谢!
    猜你喜欢
    • 2014-01-26
    • 2012-04-07
    • 1970-01-01
    • 2012-01-16
    • 1970-01-01
    • 2011-08-10
    • 1970-01-01
    • 2018-04-15
    • 2017-12-05
    相关资源
    最近更新 更多