【问题标题】:Silverlight 4 - ScrollViewer and child DataGrid MinHeightSilverlight 4 - ScrollViewer 和子 DataGrid MinHeight
【发布时间】:2011-05-18 16:11:07
【问题描述】:

编辑:我几乎重写了整个问题,因为我意识到这个问题不正确且令人困惑。我为此道歉,但这个问题的假设不正确,无法回答。我最初试图简化它以使其更易于理解,但这使得我无法复制我的问题。

如果我在ScrollViewer 中有一个DataGrid 和一个MinHeight,我希望随着我的ViewPort 缩小,元素的ActualHeight 会减少,直到它在滚动条显示之前达到MinHeight起来。

相反,当数据网格的行累积高度加起来超过MinHeight 时,此值似乎会覆盖 MinHeight

有没有办法做到这一点,而无需手动调整所有内容并拥有大量代码?

例子:

<ScrollViewer VerticalScrollBarVisibility="Auto" Background="Red">
    <Grid x:Name="LayoutRoot" Background="Black" HorizontalAlignment="Stretch">
        <Grid.RowDefinitions>
            <RowDefinition MinHeight="20"/>
            <RowDefinition Height="80"/>
        </Grid.RowDefinitions>

        <sdk:DataGrid AutoGenerateColumns="True" Name="dataGrid1" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" MinHeight="20" />
        <Rectangle Fill="Blue" Width="100" Height="80" Grid.Row="1" />
    </Grid>
</ScrollViewer>

如果您要使用一些行填充此网格,如果您最大化窗口,则网格会占用大部分空间并在行之后有空白区域。如果将其缩小,则布局会从空白空间中移除,直到该空间用完为止,然后根级别 ScrollViewer 会启动,即使尚未达到 MinHeight

如果您将DataGrid 替换为另一个矩形,则行为会有所不同(显然)。新矩形将缩小到高度 20。

如何使用网格实现这一点?我的要求是在我的 SL 页面上有嵌套的滚动条(我觉得这很恶心,但它不在我的控制范围内)。这个想法是顶级滚动条是某种“最后的手段”。

【问题讨论】:

  • 你能发布你的元素模板的 XAML 吗?我猜原因可能是内容让它比你想要的高。

标签: wpf xaml silverlight-4.0 scrollviewer


【解决方案1】:

这个呢:

<ScrollViewer>
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*" />
        <RowDefinition Height="250" />
    </Grid.RowDefinitions>      
    <Rectangle MinHeight="150" Background="Red" Grid.Row="0" />
    <Rectangle Height="250" Background="Blue" Grid.Row="1" />
</Grid>

您没有在任一矩形上设置 Grid.Row 值。

【讨论】:

    【解决方案2】:

    您没有提供足够的信息来解决您的具体问题。但是,很容易证明ScrollViewer 确实以您想要的方式工作,只需简化为:

    <UserControl ...>
        <ScrollViewer VerticalScrollBarVisibility="Auto">
            <Border MinHeight="200" BorderBrush="Blue" BorderThickness="1" Background="Red"/>
        </ScrollViewer>
    </UserControl>
    

    把它放在一个独立的 Silverlight 应用程序中,你会看到 ScrollViewer 只在窗口足够小的时候显示垂直滚动条。您可以下载解决方案here

    【讨论】:

    • 请停止在您的帖子上签名。你的头像就是你的签名。
    • @Bill:好的!亲切的问候,SpeziFish。
    【解决方案3】:

    这是因为 ScrollViewer 本身有一个边框和填充,只占用很少的空间。尝试考虑与滚动条边框空间相匹配的额外高度。

    另一个选项是更改scrollviewer的控制模板并删除内容展示器周围的边框和额外空间。并将水平滚动可见性设置为折叠,这样它就不会占用空间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      • 2011-08-04
      • 2011-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多