用户控件在运行时从应用程序动态插入主窗口。我的问题是滚动条不工作。。。
<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行中的按钮。
- 您不需要ScrollViewer
-
我认为最外层的网格正在扩展以适应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。。。
这就是问题所在,灰色增长,用户控制也出现了问题。所以你永远不会看到滚动条。