我想在一个DataGrid中放置一个HeaderedContentControl,但是DataGrid没有一个垂直滚动条。它的大小似乎是一次容纳所有行,底部从视野中消失。
如果我把同样的DataGrid放在边框里,我就会得到我想要的行为。
我把它简化为这个最小的例子:
<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>几个注意事项:
我无法用HeaderedContentControl.VerticalContentAlignment
发布于 2010-06-19 21:41:41
您可以看到这种行为,因为HeaderedContentControl的默认模板是使用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>https://stackoverflow.com/questions/3077249
复制相似问题