2016-12-24 40 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放置在這樣的面板中時,它可能會呈現一個水平滾動條,根據需要爲其內容提供空間,但不會呈現垂直滾動條。它不需要,因爲它的外部高度可以增長到無限大,因此,它的內部高度也可以不必使用滾動條。