[英]WPF DataGrid vertical sizing
我想將一個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>
幾點說明:
您看到此行為是因為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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.