2014-11-08 2 views
1

TabItem 안에 여러 요소가 있는데, ListView을 세로로 스크롤 할 수 있지만 버튼은 스크롤하지 않고 맨 위에 놓습니다. ScrollViewerListView을 배치하려고했으나 스크롤하지 않습니다. ScrollViewerItemsControl 외부에 넣고 RowDefinition Height="*"을 업데이트하고 버튼을 비롯한 모든 콘텐츠 스크롤을 스크롤 할 수 있습니다.하지만 필요한 것은 아닙니다.ListView가 수직으로 스크롤되지 않습니다.

XAML :

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition Height="Auto" /> 
    </Grid.RowDefinitions>  

    <Menu Grid.Row="0" KeyboardNavigation.TabNavigation="Cycle"> 
     <MenuItem Header="File"> 
      <MenuItem Header="Exit" /> 
     </MenuItem> 
     <MenuItem Header="Options" /> 
     <MenuItem Header="Help" /> 
    </Menu> 

    <TextBlock Grid.Row="1" Text="Test" Height="23" Width="Auto" HorizontalAlignment="Left" TextWrapping="Wrap"/> 

    <TabControl Grid.Row="2" > 
     <TabItem Header="TabItem1"> 
      <ItemsControl> 
       <StackPanel Orientation="Horizontal"> 
        <Button Command="{Binding Button1}" Width="150" Margin="5" Height="22" HorizontalAlignment="Left">Button1</Button> 
        <Button Command="{Binding Button2}" CommandParameter="{Binding ElementName=listView}" Width="150" Margin="5" Height="22" HorizontalAlignment="Left">Button2</Button> 
       </StackPanel> 
        <ScrollViewer> 
         <ListView Name="listView" Grid.Row="1" BorderThickness="0" ItemsSource="{Binding myItems}"> 
          <ListView.View> 
           <GridView> 
            <GridViewColumn Header="ID" DisplayMemberBinding="{Binding ID}" Width="Auto" /> 
            <GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}" Width="Auto" /> 
           </GridView> 
          </ListView.View> 
         </ListView> 
        </ScrollViewer> 
       </ItemsControl> 
     </TabItem> 

     ... Other tabs 
    </TabControl> 
</Grid> 

답변

3

당신은 기본이 아이들에게 성장 높이의 무제한을 제공 수직 StackPanel의 항목을 넣어 것입니다 수 ItemsControl을 필요가 없습니다. 즉, ListView에는 모든 항목을 수용 할 수 있도록 무제한의 높이가 있으므로 스크롤바가 표시되지 않습니다. 대신 Grid을 사용하면 ScrollViewer이 필요하지 않습니다. 그것은 주요 Grid에도

<TabItem Header="TabItem1"> 
    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition/> 
     </Grid.RowDefinitions> 
     <StackPanel Orientation="Horizontal" Grid.Row="0"> 
      <Button Command="{Binding Button1}" Width="150" Margin="5" Height="22" HorizontalAlignment="Left">Button1</Button> 
      <Button Command="{Binding Button2}" CommandParameter="{Binding ElementName=listView}" Width="150" Margin="5" Height="22" HorizontalAlignment="Left">Button2</Button> 
     </StackPanel> 
     <ListView Name="listView" Grid.Row="1" BorderThickness="0" ItemsSource="{Binding myItems}"> 
      <ListView.View> 
       <GridView> 
        <GridViewColumn Header="ID" DisplayMemberBinding="{Binding ID}" Width="Auto" /> 
        <GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}" Width="Auto" /> 
       </GridView> 
      </ListView.View> 
     </ListView> 
    </Grid> 
</TabItem> 

어쨌든 ListView에 대한 기본 템플릿의 일부는 마지막 행

을 스크롤하지 않고 전체 ListView에 맞게 공간 TabControl 양을 줄 것이다이 같은 자동차에 높이 ( TabControl를 포함하는 하나)를 설정하지 마십시오
<Grid.RowDefinitions> 
    <RowDefinition Height="Auto" /> 
    <RowDefinition Height="Auto" /> 
    <RowDefinition /> 
</Grid.RowDefinitions> 
+0

완벽합니다. 설명 주셔서 감사합니다! – yellavon

+0

@yellavon 문제가 없습니다. 다행히 도왔다. – dkozl

관련 문제