2015-09-18 116 views
0

我有一個帶有擴展器的ListBox,它又包含一個ListBox。 我希望ListBox和Expanders(listBox1)以及每個Expander(listBox2)中的ListBox都具有滾動功能,但我無法讓最內層的滾動工作(即我的XAML中的scrollViewer1)。擴展器中的滾動查看器

我怎樣才能讓兩個滾動條工作?

<ScrollViewer x:Name="scrollViewer1"> 
    <ListBox x:Name="listBox1" ItemsSource="{Binding Data}"> 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <StackPanel> 
        <Expander> 
         <Expander.Header> 
          <TextBlock Text="{Binding Name}"> 
          </TextBlock> 
         </Expander.Header> 
         <ScrollViewer x:Name="scrollViewer2"> 
          <ListBox x:Name="listBox2" ItemsSource="{Binding Numbers}"> 
           <ListBox.ItemTemplate> 
            <DataTemplate> 
             <StackPanel> 
              <Grid> 
               <TextBlock Grid.Column="0" Text="{Binding}"/> 
              </Grid> 
             </StackPanel> 
            </DataTemplate> 
           </ListBox.ItemTemplate> 
          </ListBox> 
         </ScrollViewer> 
        </Expander> 
       </StackPanel> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 
一切,你闖到大的

回答

0

首先需要的ScrollViewer標籤:列表框本身處理滾動。要控制列表框滾動條的可見性,您可以使用ScrollViewer.HorizontalScrollBarVisibilityScrollViewer.VerticalScrollBarVisibility

其次,內部列表框的垂直滾動條不會出現,因爲沒有高度限制,列表框將展開以顯示所有項目。

這裏是工作的代碼至極顯示家長和內部列表框的兩個滾動條:

<Window x:Class="StackOverflow.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> 
    <ListBox x:Name="listBox1" ItemsSource="{Binding Clients}"> 
     <ListBox.ItemTemplate> 
      <DataTemplate> 

       <Expander> 
        <Expander.Header> 
         <TextBlock Text="{Binding Name}"> 
         </TextBlock> 
        </Expander.Header> 

        <ListBox x:Name="listBox2" ItemsSource="{Binding Children}" MaxHeight="150"> 
         <ListBox.ItemTemplate> 
          <DataTemplate> 
           <StackPanel> 
            <Grid> 
             <TextBlock Grid.Column="0" Text="{Binding Name}"/> 
            </Grid> 
           </StackPanel> 
          </DataTemplate> 
         </ListBox.ItemTemplate> 
        </ListBox> 

       </Expander> 

      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 
</Grid> 
</Window> 

要重現你的問題,只是刪除在第二個列表框的MaxHeight。

+0

謝謝!當窗口調整大小時,如何讓listBox2將其高度調整爲適合窗口的大小? – aengas