Hen*_*man 4 wpf xaml wpfdatagrid contentcontrol wpf-4.0
我想将一个DataGrid放在HeaderedContentControl中,但DataGrid没有得到一个垂直的Scrollbar.它看起来大小可以同时容纳所有行,底部从视图中消失.
如果我将相同的DataGrid放在Border elelemnt中,我会得到我想要的行为.
我把它简化为这个最小的例子:
<Grid>
<HeaderedContentControl Margin="10,10,10,161" >
<HeaderedContentControl.Header >test</HeaderedContentControl.Header>
<!-- I want it Here but then no Vertical Scroll-->
<DataGrid ItemsSource="{Binding Path=AllData}"
AutoGenerateColumns="True" />
</HeaderedContentControl>
<Border Margin="10,169,10,10">
<!--Here it does scroll -->
<DataGrid ItemsSource="{Binding Path=AllData}"
AutoGenerateColumns="True" />
</Border>
</Grid>
Run Code Online (Sandbox Code Playgroud)
几点说明:
您正在看到此行为,因为默认模板HeaderedContentControl是使用a StackPanel来显示其内容.由于它StackPanel占用了孩子的大小,所以DataGrid扩展其高度使其每个项目都显示在屏幕上而没有滚动条.然后由于尺寸的原因裁剪显示HeaderedContentControl.
更改模板以使用Grid或DockPanel解决此问题:
<Style TargetType="{x:Type HeaderedContentControl}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type HeaderedContentControl}">
<DockPanel>
<ContentPresenter DockPanel.Dock="Top" ContentSource="Header" />
<ContentPresenter />
</DockPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1570 次 |
| 最近记录: |