Scrollviewer中的扩展器:Scrollviewer在折叠扩展器后没有缩小

时间:2013-04-19 14:19:02

标签: xaml telerik scrollviewer expander

我有一个网格。此网格包含一个滚动查看器,其中包含一个列表框,其项目是扩展器。展开扩展器直到它们超出UserControl的垂直可用高度时,scrollviewer的滚动条正确显示。当我再次折叠扩展器时,滚动查看器的scorll栏保持不变!它没有像预期的那样再次收缩或消失。

我已经尝试了一些不同的网格行设置("自动"," *")和不同的垂直对齐设置(顶部,拉伸,......)

如何在折叠扩展器后设置让scrollviewer再次收缩?

<UserControl x:Class="Expanderin_Scroller.MainPage"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
             mc:Ignorable="d"
             d:DesignWidth="440"
             d:DesignHeight="300">

  <Grid x:Name="LayoutRoot">
    <Grid.RowDefinitions>
      <RowDefinition Height="Auto" />
      <RowDefinition Height="*" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
      <ColumnDefinition Width="Auto" />
    </Grid.ColumnDefinitions>
    <ScrollViewer x:Name="ScrToolbox"
                  Grid.Row="1"
                  VerticalAlignment="Top">
      <ListBox x:Name="Toolbox">
        <telerik:RadExpander Header="Expander 1">
          <StackPanel>
            <TextBlock>Hello</TextBlock>
            <TextBlock>Hello</TextBlock>
            <TextBlock>Hello</TextBlock>
            <TextBlock>Hello</TextBlock>
            <TextBlock>Hello</TextBlock>
            <TextBlock>Hello</TextBlock>
            <TextBlock>Hello</TextBlock>
            <TextBlock>Hello</TextBlock>
            <TextBlock>Hello</TextBlock>
            <TextBlock>Hello</TextBlock>
          </StackPanel>
        </telerik:RadExpander>

        <telerik:RadExpander Header="Expander 2">
          <StackPanel>
            <TextBlock>Hello</TextBlock>
            <TextBlock>Hello</TextBlock>
            <TextBlock>Hello</TextBlock>
            <TextBlock>Hello</TextBlock>
            <TextBlock>Hello</TextBlock>
            <TextBlock>Hello</TextBlock>
            <TextBlock>Hello</TextBlock>
            <TextBlock>Hello</TextBlock>
            <TextBlock>Hello</TextBlock>
            <TextBlock>Hello</TextBlock>
          </StackPanel>
        </telerik:RadExpander>

        <telerik:RadExpander Header="Expander 3">
          <StackPanel>
            <TextBlock>Hello</TextBlock>
            <TextBlock>Hello</TextBlock>
            <TextBlock>Hello</TextBlock>
            <TextBlock>Hello</TextBlock>
            <TextBlock>Hello</TextBlock>
            <TextBlock>Hello</TextBlock>
            <TextBlock>Hello</TextBlock>
            <TextBlock>Hello</TextBlock>
            <TextBlock>Hello</TextBlock>
            <TextBlock>Hello</TextBlock>
          </StackPanel>
        </telerik:RadExpander>

        <telerik:RadExpander Header="Expander 4">
          <StackPanel>
            <TextBlock>Hello</TextBlock>
            <TextBlock>Hello</TextBlock>
            <TextBlock>Hello</TextBlock>
            <TextBlock>Hello</TextBlock>
            <TextBlock>Hello</TextBlock>
            <TextBlock>Hello</TextBlock>
            <TextBlock>Hello</TextBlock>
            <TextBlock>Hello</TextBlock>
          </StackPanel>
        </telerik:RadExpander>
      </ListBox>
    </ScrollViewer>
  </Grid>
</UserControl>

1 个答案:

答案 0 :(得分:0)

我可以在Telerik家伙的帮助下解决这个问题:

此问题是由ListBox行为引起的,特别是其ItemsPanel引起的。为了更新ListBox的大小及其内容的大小,您可以将ListBox.ItemsPanel设置为StackPanel。

<ListBox.ItemsPanel>
     <ItemsPanelTemplate>
          <StackPanel />
     </ItemsPanelTemplate>
</ListBox.ItemsPanel>

现在,列表框会调整其内容的大小。