滚动条在UserControl的嵌套网格中无法正常工作



用户控件在运行时从应用程序动态插入主窗口。我的问题是滚动条不工作。。。

<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="50"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid Grid.Row="0" DockPanel.Dock="Top" Height="50" Background="#FF2E3137" VerticalAlignment="Top">
<StackPanel Margin="10 0" HorizontalAlignment="Left">
<!--Label inside-->
</StackPanel>
<StackPanel HorizontalAlignment="Right" Orientation="Horizontal">
<!--Stack Panel with buttons inside-->
</StackPanel>
<Separator VerticalAlignment="Bottom"></Separator>
</Grid>
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
<DataGrid Grid.Row="1" Name="dataGrid1" AutoGenerateColumns="False" FontSize="16"     
Background="#FF2E3137" AlternatingRowBackground="LightGray"     
CanUserAddRows="False"     
ScrollViewer.CanContentScroll="True"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
>
<DataGrid.Columns>
<DataGridTextColumn Header="Id" Binding="{Binding ID}" Width="50"  IsReadOnly="True" />
<DataGridTextColumn Header="Bezeichnung" Binding="{Binding BEZEICHNUNG}" Width="350"/>
</DataGrid.Columns>
</DataGrid>
</ScrollViewer>
</Grid>

结果如下:网格行1中没有按钮栏图片1

结果如下:图2图片2

这应该是GridRow 1中的按钮的结果,在GridRow 2中,Datagrid被嵌套,滚动条应该正确显示和工作。网格似乎垂直增长到无穷大,所以滚动条不会出现。。。

示例隐藏第1行中的按钮。

  1. 您不需要ScrollViewer
  2. 我认为最外层的网格正在扩展以适应DataGrid的高度。您可以从实时可视化树中检查此网格的高度。如果这是真的,DockPanel可以通过填充窗口的其余部分来解决这个问题。

    <Control Name="parentControl">
    <Grid Name="outermostGrid">
    <Grid.RowDefinitions>
    <RowDefinition Height="50"/>
    <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <Grid Grid.Row="0" DockPanel.Dock="Top" Height="50" Background="#FF2E3137" VerticalAlignment="Top">
    <StackPanel Margin="10 0" HorizontalAlignment="Left">
    <!--Label inside-->
    </StackPanel>
    <StackPanel HorizontalAlignment="Right" Orientation="Horizontal">
    <!--Stack Panel with buttons inside-->
    </StackPanel>
    <Separator VerticalAlignment="Bottom"></Separator>
    </Grid>
    <!--DataGrid has its own scrollviewer-->
    <DataGrid Grid.Row="1" Name="dataGrid1" AutoGenerateColumns="False" FontSize="16"     
    Background="#FF2E3137" AlternatingRowBackground="LightGray"     
    CanUserAddRows="False"     
    ScrollViewer.CanContentScroll="True"
    ScrollViewer.VerticalScrollBarVisibility="Auto"
    ScrollViewer.HorizontalScrollBarVisibility="Auto">
    <DataGrid.Columns>
    <DataGridTextColumn Header="Id" Binding="{Binding ID}" Width="50"  IsReadOnly="True" />
    <DataGridTextColumn Header="Bezeichnung" Binding="{Binding BEZEICHNUNG}" Width="350"/>
    </DataGrid.Columns>
    </DataGrid>
    </Grid>
    </Control>
    

确保outermostGrid填充其父项,并且parentControl未自动展开。

问题不在于控件本身。问题在嵌套控件的主窗口中高出一个阶段。有一个网格而不是Dockpanel。。。

这就是问题所在,灰色增长,用户控制也出现了问题。所以你永远不会看到滚动条。

最新更新