2015-09-28 70 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並接受它作爲答案,因爲它按預期工作。 :) –