2017-06-01 14 views
-1

グリッドにラップされたDataGridを含むWPFのusercontrolがあります。 UserControlはStackPanelでラップされたTabControlのメインアプリケーションウィンドウでホストされています。グリッドに含まれるWPF DataGridの垂直スクロールバーが全幅を表示しないのはなぜですか?

問題は、DataGridの垂直スクロールバーを完全に表示できないことです。それは、幅が1/2しか見えないように「クリップされた」状態になります。ここで

は私のユーザーコントロールのXAML定義です:

<UserControl x:Class="Sample.Views.SampleView" 
      Width="{Binding RelativeSource={RelativeSource FindAncestor, 
         AncestorType={x:Type StackPanel}},Path=ActualWidth}" 
      Height="{Binding RelativeSource={RelativeSource FindAncestor, 
         AncestorType={x:Type StackPanel}},Path=ActualHeight}"> 
    <Grid Name="PastDueInvoicesGrid" > 
     <DataGrid Name="PastDueInvoicesDataGrid" 
       AutoGenerateColumns="False" 
       Margin="0,0,0,3" 
       GridLinesVisibility="None" 
       IsReadOnly="True" 
       SelectionMode="Extended" 
       SelectionUnit="CellOrRowHeader" 
       HorizontalScrollBarVisibility="Auto" 
       VerticalScrollBarVisibility="Auto" 
       AllowDrop="False" > 
     </DataGrid> 
    </Grid> 
</UserControl> 

これは、StackPanelの/のTabControlの定義は次のようになります。私はいくつかの異なる試みた

<StackPanel Grid.Row="1" x:Name="stackPanelAccountDetailViewContainer" 
    Orientation="Vertical"> 
    <TabControl x:Name="tabContainerContainer" 
    TabStripPlacement="Bottom" 
    Height="{Binding Path=ActualHeight, 
    RelativeSource={RelativeSource Mode=FindAncestor, 
    AncestorType={x:Type StackPanel}}}" 
    Width="{Binding Path=ActualWidth, 
    RelativeSource={RelativeSource Mode=FindAncestor, 
    AncestorType={x:Type StackPanel}}}"> 
    </TabControl> 
</StackPanel> 

私は縦スクロールバーに全幅を表示させることはできません。横幅がコンテナ幅を超えているようです。

正しく表示させるにはどうすればよいですか? https://stackoverflow.com/help/mcve:質問をするとき

おかげ

+0

私は問題のよく分からないが、一般的に、私は避けるだろうStackPanelとScrollViewerを併用します。私にとっては、スクロールビューアの振る舞いに問題が生じることがよくあります。 – Bojje

答えて

0

あなたはいつも問題の、最小完全、かつ検証可能な例を提供する必要があります。

これは誰でもあなたの問題を再現し、修正する方法を教えることはできません。

ここにいくつかの点があります。 TabControlまたはUserControlWidth(またはHeight)を設定しないでください。彼らはとにかく親StackPanelを埋めるためにストレッチします:

<StackPanel Grid.Row="1" x:Name="stackPanelAccountDetailViewContainer" Orientation="Vertical"> 
    <TabControl x:Name="tabContainerContainer" TabStripPlacement="Bottom"> 
    </TabControl> 
</StackPanel> 

<UserControl x:Class="Sample.Views.SampleView"> 
    <Grid Name="PastDueInvoicesGrid" > 
     <DataGrid Name="PastDueInvoicesDataGrid" 
       AutoGenerateColumns="False" 
       Margin="0,0,0,3" 
       GridLinesVisibility="None" 
       IsReadOnly="True" 
       SelectionMode="Extended" 
       SelectionUnit="CellOrRowHeader" 
       HorizontalScrollBarVisibility="Auto" 
       VerticalScrollBarVisibility="Auto" 
       AllowDrop="False" > 
     </DataGrid> 
    </Grid> 
</UserControl> 

またUserControlMarginまたはPaddingを追加しようとする場合があります。

<UserControl x:Class="Sample.Views.SampleView" ... Padding="5"> 
関連する問題