Silverlight 对ScrollViewer的SizeChanged事件执行UpdateLayout

Silverlight 对ScrollViewer的SizeChanged事件执行UpdateLayout,silverlight,xaml,layout,silverlight-4.0,scrollbar,Silverlight,Xaml,Layout,Silverlight 4.0,Scrollbar,已更新 我有一个迟钝的要求,我正试图满足与现有元素的工作,我在一个点上,我真的可以使用另一双眼睛 为了更快的解释,一些伪的 <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> <RowDefinition

已更新 我有一个迟钝的要求,我正试图满足与现有元素的工作,我在一个点上,我真的可以使用另一双眼睛

为了更快的解释,一些伪的

<Grid>
  <Grid.RowDefinitions>
     <RowDefinition Height="Auto"/>
     <RowDefinition Height="Auto"/>
     <RowDefinition Height="*"/>
     <RowDefinition Height="Auto"/>
   </Grid.RowDefinitions>

   <Grid/>
   <Grid Grid.Row="1"/>
   <Grid Grid.Row="2"/>

   <Grid Grid.Row="3" Visibility="Collapsed">
      <Grid.RowDefinitions>
         <RowDefinition Height="20"/>
         <RowDefinition Height="*"/>
      </Grid.RowDefinitions>

        <ScrollViewer Grid.Row="1">
          <ItemsControl/>
        </ScrollViewer/>

    </Grid>

</Grid>
我希望一个比我睡得多的人能对我的愚蠢行为或我忘记了什么提供一些见解?看起来这样的事情应该行得通

我所需要做的就是,仍然尊重
可见性
更改,允许父行折叠,但仍然在可见且需要时调用滚动条。有什么把戏吗


PS-我也在尝试无效Arrange&InvalidateMeasure,但运气不好,我是否在这种情况下错误地使用了CallMethodAction?

在第二行设置
VerticalAlignment=“Top”
和无
Height
(或
Height=“*”
)外部网格中的定义应起作用:

<Grid VerticalAlignment="Top">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition/>
    </Grid.RowDefinitions>

    <Grid Grid.Row="1" Visibility="Collapsed">
        <Grid.RowDefinitions>
            <RowDefinition Height="20"/>
            <RowDefinition/>
        </Grid.RowDefinitions>

        <ScrollViewer Grid.Row="1">
            <ItemsControl/>
        </ScrollViewer>
    </Grid>
</Grid>


您不能从外部网格的第二行删除
Height=“Auto”
设置吗?这将使该行完全填满可用空间,并自动切换滚动条。@Clemens然后当填充它的内容被折叠时,它保持原来的大小,留下一个很好的大空白。不幸的是,我尝试了许多不同的方法。好的,如果你也在外部网格上设置了
VerticalAlignment=“Top”
,它应该可以工作。我更新了问题中的布局,我认为这两行可以传达示例,但我不这么认为。不幸的是,这仍然会留下一个空间,并且不会调用滚动条,所以我假设父级中它上面的*有效?令人惊讶的是,那些看似最空洞的东西竟然会成为世界上最大的痛苦,你可能只是混淆了指数?第三行有
Height=“*”
,但折叠的内部网格有
Grid.row=“3”
,这是第四行。不,它的设置方式当时是一种满足需求的临时方式,但它并没有真正实现它的功能。因此,您可以在所有行的内容上切换可见性,但*行在其他行展开/折叠时会推动其他行,因此可以使中心在其周围的内容向内和向外切换时占用更多或更少的空间。(我知道,我知道…)
<Grid VerticalAlignment="Top">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition/>
    </Grid.RowDefinitions>

    <Grid Grid.Row="1" Visibility="Collapsed">
        <Grid.RowDefinitions>
            <RowDefinition Height="20"/>
            <RowDefinition/>
        </Grid.RowDefinitions>

        <ScrollViewer Grid.Row="1">
            <ItemsControl/>
        </ScrollViewer>
    </Grid>
</Grid>