2015-09-28 72 views
1

我是XAML的新手,我似乎无法弄清楚这一点。我想要一个两列页面(以winforms形式)停靠到它的容器。第一列有一个列表框,我希望这可以在需要时自动显示滚动条。我能够这样做,但只有当我设置ListBox的Height或MaxHeight。我的问题是当主窗口/窗体大小调整后,列表框不会再变大。我想要的是将列表框停靠到第一列,以便在窗体调整大小时调整大小,并在需要时显示滚动条。如何在XAML中的网格中的列表框中添加滚动条?

这里是代码并不显示滚动条:

<Window x:Class="WpfApplication3.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="350" Width="525"> 
<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="auto" /> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*"/> 
     <ColumnDefinition Width="*"/> 
    </Grid.ColumnDefinitions> 

    <StackPanel Grid.Column="0" Grid.Row="0"> 

     <ListBox x:Name="lstView" 
       ScrollViewer.VerticalScrollBarVisibility="Auto" 
       ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
        Margin="10"> 
      <ListBox.ItemTemplate> 
       <DataTemplate> 
        <StackPanel Orientation="Horizontal" Height="20"> 
         <TextBlock Text="{Binding}"/> 
        </StackPanel> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 
     </ListBox> 
    </StackPanel> 
</Grid> 

这里是显示一个滚动条,但有一个固定高度的代码。

<Window x:Class="WpfApplication3.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="350" Width="525"> 
<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="auto" /> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*"/> 
     <ColumnDefinition Width="*"/> 
    </Grid.ColumnDefinitions> 

    <StackPanel Grid.Column="0" Grid.Row="0"> 

     <ListBox x:Name="lstView" 
       ScrollViewer.VerticalScrollBarVisibility="Auto" 
       ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
       Height="200" 
        Margin="10"> 
      <ListBox.ItemTemplate> 
       <DataTemplate> 
        <StackPanel Orientation="Horizontal" Height="20"> 
         <TextBlock Text="{Binding}"/> 
        </StackPanel> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 
     </ListBox> 
    </StackPanel> 
</Grid> 

+0

尝试changin行高为“*”而不是“自动”,并删除列表框的高度 –

+0

把一个高度和宽度的画布放在一个堆栈面板内,并将列表框放在画布内 – madan

+0

我试过但行为相同。没有指定ListBox中的高度时没有滚动条。如果我指定列表框的高度不增长。 – doms

回答

1

使用StackPanel时滚动条可见的问题。我认为这是因为StackPanel总是和包含所有子项一样大。尝试重新组织布局以删除StackPanel(改为使用Grid)并查看是否有帮助。

+0

我看到了!谢谢!我删除了堆叠面板,现在它正常工作,因为我预料它应该是! – doms

+0

那么你可以Upvote并接受它作为答案,因为它按预期工作。 :) –