Kon*_*ten 1 wpf xaml datagrid scrollbar
我已经阅读了很多关于这个问题的帖子,但是我不能在我的要求下使它正常工作。我的数字可能会出现逻辑故障,或者我错过了一些关键细节,但我看不到。
我得到的是一个滚动条,但它似乎没有激活。我的猜测是,由于存在标记,网格将整体呈现,从而使滚动画面变得不必要。我如何才能感到别样?
我希望创建一个显示较长数据网格的窗口,该网格是:
XAML
<Window ...
SizeToContent="Width"
Height="600"
ResizeMode="NoResize">
<StackPanel>
<StackPanel Orientation="Horizontal">
<Button Content="Aaa" Click="Aaa_OnClick" />
<Button Content="Bbb" Click="Bbb_OnClick" />
</StackPanel>
<DataGrid ItemsSource="{Binding Things}"
VerticalScrollBarVisibility="Visible"
AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Id"
Width="30"
Binding="{Binding Path=Id}" />
<DataGridTextColumn Header="Name"
Width="150"
Binding="{Binding Path=Name}" />
</DataGrid.Columns>
</DataGrid>
</StackPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)
我想念什么?
这里的问题是您使用StackPanel来包装您的DataGrid。StackPanel会一直增长,直到可以包含整体为止DataGrid,因此在这种情况下,DataGrid其垂直滚动条设置为可见,但实际上其高度已足够扩展,因此无需显示滚动条。如果将滚动条的可见性设置为Auto,则不会看到它。
您应该Grid改为使用布局,如下所示:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal">
<Button Content="Aaa" Click="Aaa_OnClick" />
<Button Content="Bbb" Click="Bbb_OnClick" />
</StackPanel>
<DataGrid ItemsSource="{Binding Things}"
VerticalScrollBarVisibility="Visible"
AutoGenerateColumns="False" Grid.Row="1">
<!-- ... -->
</DataGrid>
</Grid>
Run Code Online (Sandbox Code Playgroud)
或者,如果您想坚持使用StackPanel,则需要在外部包装ScrollViewer,如下所示:
<ScrollViewer VerticalScrollBarVisibility="Visible">
<StackPanel>
<StackPanel Orientation="Horizontal">
<Button Content="Aaa" Click="Aaa_OnClick" />
<Button Content="Bbb" Click="Bbb_OnClick" />
</StackPanel>
<DataGrid ItemsSource="{Binding Things}"
AutoGenerateColumns="False">
<!-- ... -->
</DataGrid>
</StackPanel>
</ScrollViewer>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1101 次 |
| 最近记录: |