我有以下布局
<DockPanel>
<StackPanel DockPanel.Dock="Top" Orientation="Horizontal" Margin="10">
...
</StackPanel>
<TabControl>
<TabItem Header="Summary">
<DataGrid ItemsSource="{Binding SummaryData}"
CanUserAddRows="False"
CanUserDeleteRows="False"
IsReadOnly="True"
HeadersVisibility="Column"
CanUserSortColumns="False" />
</TabItem>
...
</TabControl>
</DockPanel>
如果没有DataGrid,TabControl和TabItems会完美地填充容器的其余部分,但是当我添加DataGrid时,它会展开所有内容以显示所有行和列。
编辑:更清晰
我希望DataGrid可以纵向和横向拉伸以填充TabItem。如果它需要更多空间,我想要显示DataGrid的滚动条。
答案 0 :(得分:1)
我有以下要做我想做的事。
<TabItem Header="Summary" >
<Grid x:Name="SummaryGrid">
<DataGrid Height="{Binding ElementName=SummaryGrid, Path=ActualHeight}"
ItemsSource="{Binding SummaryData}"
CanUserAddRows="False"
CanUserDeleteRows="False"
IsReadOnly="True"
HeadersVisibility="Column"
CanUserSortColumns="False" />
</Grid>
</TabItem>
直到我更改父面板的大小才有效。 ActualHeight
未更新。现在它已经足够了。
答案 1 :(得分:0)
这是你正在寻找的行为吗?
<DockPanel>
<StackPanel DockPanel.Dock="Top" Orientation="Horizontal" Margin="10">
<TextBox Text="tttt" />
</StackPanel>
<TabControl VerticalAlignment="Top" HorizontalAlignment="Left">
<TabItem Header="Summary">
<DataGrid CanUserAddRows="False"
CanUserDeleteRows="False"
IsReadOnly="True"
HeadersVisibility="Column"
CanUserSortColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Column 1" Binding="{Binding}"></DataGridTextColumn>
</DataGrid.Columns>
<sys:String>Entry</sys:String>
</DataGrid>
</TabItem>
</TabControl>
</DockPanel>
通过设置这些对齐,您可以将DataGrid拉伸到TabItem中的可用空间。但我不确定你到底在找什么。
您可以使用 VerticalAlignment 和 HorizontalAlignment 来获得您需要的内容。 (将其设置为Top / Left / Stretch以仅获取TabItem,或DataGrid或两者都以您想要的方式拉伸)
答案 2 :(得分:0)
可接受的答案是一种解决方法...
标签控件将在其容器中扩展 以及所有标签项。通过将网格作为其容器,并指定行/列的大小为*
(在窗口内扩展),可以将其滴落到datagrid。
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="15"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="15"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="15"/>
<RowDefinition Height="*"/>
<RowDefinition Height="10"/>
<RowDefinition Height="100"/>
<RowDefinition Height="15"/>
</Grid.RowDefinitions>
<TabControl Name="tabOperations"
Grid.Row="1"
Grid.Column="1"
TabStripPlacement="Top"
Margin="0,0,0,4"
>
<TabItem Header="Provider Accounts" >
<DataGrid AutoGenerateColumns="True"
IsReadOnly="True"
ItemsSource="{Binding ProviderAccounts}"/>
</TabItem>
</TabControl>
<GridSplitter Grid.Row="2"
Height="3"
Grid.Column="1"
HorizontalAlignment="Stretch" />
<TextBox Grid.Row="3" Grid.Column="1"
TextWrapping="Wrap" Text="{Binding Status}"
Margin="0,4,0,0"
/>
因此,不管主窗口的大小如何,它都会跨越。