2016-12-24 261 views
2

我想为每个TabItem添加一个滚动条,所以当有太多的内容我可以向下滚动。我试图将其设置为可见,但它不起作用。C#WPF - 滚动条在动态TabControl

TabItems将通过包含Header和Content的代码动态添加。

任何想法在代码或XAML上水平和垂直添加滚动条?

<TabControl x:Name="SemesterTabs" Margin="20,61,20,55" Width="584" HorizontalAlignment="Left"> 
    <TabControl.ContentTemplate> 
     <DataTemplate> 
      <StackPanel> 
       <!-- Tabs mit Datagridview binden und nur ein Eintrag in den Tabs auswaehlbar machen --> 
       <DataGrid IsReadOnly="True" SelectionMode="Single" FontStyle="Normal" ItemsSource="{Binding DefaultView}" ScrollViewer.CanContentScroll="True" ScrollViewer.VerticalScrollBarVisibility="Auto" ScrollViewer.HorizontalScrollBarVisibility="Auto" SelectionChanged="DataGrid_SelectionChanged"> 
        <!-- Um Faecher mit Rechtsclick einfuegen, bearbeiten und loeschen zu koennen --> 
        <DataGrid.ContextMenu> 
         <ContextMenu> 
          <MenuItem Header="Hinzufügen" Click="addNewRow_Click"/> 
          <MenuItem Header="Bearbeiten" Click="editRowEntry_Click"/> 
          <MenuItem Header="Löschen" Click="deleteRowEntry_Click"/> 
         </ContextMenu> 
        </DataGrid.ContextMenu> 
       </DataGrid> 
      </StackPanel> 
     </DataTemplate> 
    </TabControl.ContentTemplate> 
</TabControl> 
+1

删除StackPanel –

+0

您是否尝试过使用ScrollViewer? – Sefe

+0

@KrisVandermotten感谢它的工作。任何想法,为什么它没有这样工作? – y4cO

回答

0

问题是Stackpanel。不知何故,它阻止了我的TabItems中的滚动查看器。

1

StackPanel是问题所在,您必须将其删除。

要理解为什么,将面板和容器控件视为具有外部大小(即它们在其容器中占据的大小)以及内部大小(即它们为子女提供的空间)的容器会有帮助。

例如,在Grid中,外部尺寸和内部尺寸相同。但在ScrollViewer,内部大小可能是无限的,而其外部大小不是。

对于StackPanel也是如此,例如垂直方向。这种面板的内部宽度与其外部宽度相同,但其内部高度是无限的。

现在,当您将ScrollViewer放置在这样的面板中时,它可能会呈现一个水平滚动条,根据需要为其内容提供空间,但不会呈现垂直滚动条。它不需要,因为它的外部高度可以增长到无限大,因此,它的内部高度也可以不必使用滚动条。