选项卡控件中的 WPF DataGrid 扩展 Window

WPF DataGrid in Tab Control Expanding Beyond Window

我有一个 WPF Window,它有一个 Tab 控件,位于 Grid 的第三行,其中包含一个 DataGrid。 DataGrid 正在填充来自 EF 的数据,并且在加载数据时,DataGrid 超出了 window.

的范围

我尝试了各种解决方案(例如,将 Vertical/Horizontal 对齐设置为拉伸),但我尝试过的都没有用。下面是一段代码,一直到 DataGrid 的第一个打开标签(实际上有三个标签,每个标签都有一个 DataGrid,但它们都是一样的,只是绑定到不同的数据源)。对于下面的 XAML,宽度绑定正确(即 DataGrid 不会超出 window 的右侧)但 DataGrid 的水平部分确实超出了 [=23] 的底部=]:

<Grid Margin="5,0,5,0" Background="Blue" >
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>

        <user_controls:Spinner x:Name="spinner" Grid.RowSpan="3" Panel.ZIndex="1000"/>

        <Menu Grid.Row="0" HorizontalAlignment="Left" VerticalAlignment="Top">
            <MenuItem Header="Exit" Click="Exit_Click"/>
            <MenuItem Header="Save" Command="{StaticResource SaveCommand}"/>
        </Menu>
        <GroupBox Grid.Row="1"  Header="Server Type" Margin="610,0,0,0">
            <StackPanel Orientation="Horizontal" Margin="0,5,0,0" HorizontalAlignment="Right">
                <RadioButton x:Name="rbTestServer" GroupName="ServerType" Content="TEST" Foreground="Red" IsChecked="true" Checked="ServerType_Checked"/>
                <RadioButton x:Name="rbProductionServer" GroupName="ServerType" Content="PRODUCTION" Foreground="Green" Margin="10,0,10,0" Checked="ServerType_Checked"/>
            </StackPanel>
        </GroupBox>
        <TabControl x:Name="tcTables" BorderBrush="Red" BorderThickness="5" Grid.Row="2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" MinHeight="371" Height="auto" MinWidth="782" Width="auto" SelectionChanged="TcTables_SelectionChanged">
            <TabItem x:Name="tiChargeType" Header="Charge Type">
                <DataGrid x:Name="dgChargeType" Background="#FFE5E5E5" AutoGenerateColumns="False" EnableRowVirtualization="True" ItemsSource="{Binding Source={StaticResource vsChargeType}}"  Margin="2,10,10,10" RowDetailsVisibilityMode="VisibleWhenSelected" CellEditEnding="CellEditEnding">

任何 help/suggestions 将不胜感激。

谢谢

您的网格中有三行:

    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>

因为第三个设置为自动高度,它告诉它的内容可以随心所欲地变大。

这就是您遇到问题的原因。

将其更改为:

    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>

那么您的选项卡控件以及其中的数据网格的高度将限制为第 0 行和第 1 行之后剩余的高度。