Сетка данных WPF в элементе управления вкладками, расширяющемся за пределы окна - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть окно WPF с элементом управления вкладками в третьей строке таблицы, которая содержит DataGrid. DataGrid заполняется данными из EF, и когда данные загружаются, DataGrid выходит за границы окна.

Я пробовал различные решения (например, установив вертикальное / горизонтальное выравнивание на растяжение)но ничего, что я пробовал, не помогло. Ниже приведен фрагмент кода вплоть до первого открытого тега DataGrid (на самом деле есть три вкладки, каждая из которых имеет DataGrid, но они все одинаковые, просто привязаны к другому источнику данных). При использовании приведенного ниже XAML ширина привязывается правильно (т.е. DataGrid не выходит за правую сторону окна), но горизонтальная часть DataGrid выходит за нижнюю часть окна:

<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">

Любая помощь / предложения будут с благодарностью.

Спасибо

1 Ответ

1 голос
/ 30 сентября 2019

У вас есть три строки в вашей сетке:

    <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.

...