选项卡控件中的 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 行之后剩余的高度。
我有一个 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 行之后剩余的高度。