2009-08-16 90 views
2

下面的scrollviewer不起作用。我尝试了一切,我可以找到本网站及其他内容:将scrollviewer嵌入到网格中,将ScrollViewer的子项嵌入到网格中,将Scrollviewer嵌入到具有固定高度的StackPanel中,设置/绑定scrollviewer的高度,一切都无济于事...谁显示我回到理智的方式?ScrollViewer不滚动

请注意,下面的XAML只是为了展示窗口的结构。我删除了所有的数据。

<Window> 
    <Window.Resources> 
     <DataTemplate x:Key="ColoringLabels"> 
     </DataTemplate> 
    </Window.Resources> 
    <DockPanel> 
     <StatusBar DockPanel.Dock="Top"> 
      <StatusBarItem> 
      </StatusBarItem> 
     </StatusBar> 
     <StackPanel Orientation="Vertical"> 
      <TextBox/> 
      <Button>Hello World!</Button> 
      <ScrollViewer> 
       <StackPanel Orientation="Vertical"> 
        <Label>Hola Mundo!</Label> 
        <ListBox ItemsSource="{Binding}"> 
         <ListBox.ItemTemplate> 
          <DataTemplate> 
           <ListBox ItemsSource="{StaticResource ColoringLabels}"/> 
          </DataTemplate> 
         </ListBox.ItemTemplate> 
        </ListBox> 
        <ListBox Source="{Binding}"ItemTemplate="{StaticResource ColoringLabels}"/> 
       </StackPanel> 
      </ScrollViewer> 
      <TextBlock/> 
     </StackPanel> 
    </DockPanel> 
</Window> 

编辑:

我解决它通过改变XAML到:

<Window> 
    <Window.Resources> 
     <DataTemplate x:Key="ColoringLabels"> 
     </DataTemplate> 
    </Window.Resources> 
    <DockPanel> 
     <StatusBar DockPanel.Dock="Top"> 
      <StatusBarItem> 
      </StatusBarItem> 
     </StatusBar> 
     <ScrollViewer> 
      <StackPanel Orientation="Vertical"> 
       <TextBox /> 
       <Button>Hello World!</Button> 
        <StackPanel Orientation="Vertical"> 
         <Label>Hola Mundo!</Label> 
         <ListBox ItemsSource="{Binding}"> 
          <ListBox.ItemTemplate> 
           <DataTemplate> 
            <ListBox ItemsSource="{StaticResource ColoringLabels}"/> 
           </DataTemplate> 
          </ListBox.ItemTemplate> 
         </ListBox> 
         <ListBox Source="{Binding}"ItemTemplate="{StaticResource ColoringLabels}"/> 
        </StackPanel> 
       <TextBlock/> 
      </StackPanel> 
     </ScrollViewer> 
    </DockPanel> 
</Window> 

为什么它现在正???也许是因为ScrollViewer现在可以填充DockPanel的LastChild位置了?

+0

我现在有同样的问题,我试过你的解决方案。但为什么我的工作不?一旦我使用滚动查看器的列表框,它会变得混乱。 – 2013-04-24 03:17:36

回答

4

试这

<Window x:Class="WpfApplication7.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" Height="308" Width="527"> 
    <Window.Resources> 
     <DataTemplate x:Key="ColoringLabels"> 
     </DataTemplate> 
    </Window.Resources> 
    <DockPanel LastChildFill="True"> 
     <StackPanel DockPanel.Dock="Top" HorizontalAlignment="Stretch"> 
      <StatusBar> 
       <StatusBarItem> 
       </StatusBarItem> 
      </StatusBar> 
      <TextBox/> 
      <Button>Hello World!</Button> 
     </StackPanel> 
     <ScrollViewer> 
      <StackPanel Orientation="Vertical" > 
       <Label>Hola Mundo!</Label> 
       <ListBox ItemsSource="{Binding}"> 
        <ListBox.ItemTemplate> 
         <DataTemplate> 
          <ListBox /> 
         </DataTemplate> 
        </ListBox.ItemTemplate> 
       </ListBox> 
       <ListBox /> 
      </StackPanel> 
     </ScrollViewer> 
     <TextBlock/> 
    </DockPanel> 

</Window> 

编辑
你的新代码的工作只是becouse的ScrollViewer大小现在固定的(这是充满屏幕的部分免费),并且它不窗外不断增长时,它的内容越来越多.. 。

+0

感谢您为此付出的所有努力!我跟着你先前的建议,并将高度添加到scrollviewer下面的第一个stackpanle(没有发生任何事情),并给列表框添加了高度。这有效,但没有产生预期的效果。我把Scrollviewer放在层次结构中更高,这确实产生了我在寻找的东西。 – Dabblernl 2009-08-16 17:26:39

+0

你很好,我编辑了这篇文章,找到你最后一个问题的答案。 – 2009-08-17 02:14:21

1

尝试给予高度你在的ScrollViewer列表框或StackPanel中,ScrollViewer中滚动时,它的内容是不是在添加内容时,以列表框的情况下,它的尺寸更大,列表框的高度没有增长,列表框滚动