2016-12-24 141 views
2

各タブアイテムにスクロールバーを追加しようとしています。私は可視に設定しようとしましたが、うまくいきません。C#WPF - 動的TabControlのスクロールバー

TabItemは、ヘッダーとコンテンツのコードに動的に追加されます。

コードまたは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

問題はスタックパネルでした。何とか私のTabItemsのScrollviewerをブロックしていました。

1

StackPanelが問題です。削除する必要があります。

理由を理解するには、パネルとコンテナコントロールを外部サイズ、つまりコンテナ内で使用するサイズ、内部サイズ、つまり子供に提供するスペースなどのコンテナと考えることをお勧めします。

例えば、Gridでは、外部サイズと内部サイズは同じです。しかし、ScrollViewerでは、内部サイズは無限で、外部サイズは無限である場合があります。

StackPanelの場合も同様です。たとえば垂直方向です。このようなパネルの内部幅は外部幅と同じですが、内部高さは無限大です。

このようなパネルにScrollViewerを配置すると、コンテンツのスペースを確保するために必要に応じて水平スクロールバーが表示されますが、垂直スクロールバーは表示されません。外部高さが無限に拡大する可能性があるため、スクロールバーを使用せずに内部高さを調整する必要はありません。