Resize DataGrid within Grid with Scrollbars

109 Views Asked by At

I know this has been covered in other questions, but I'm having some real challenges making it work. There has got to be a better way. I just need the datagrid to grow. It's anchored on horizontally, but veritically it seems to extend forever with no scroll bars.

This is my xaml for the grid:

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

    <Label Grid.Row="0" Content="Study Management" HorizontalContentAlignment="Center" Margin="0,0,0,0" VerticalAlignment="Top" FontSize="20"/>

    <StackPanel Grid.Row="1">



        <DataGrid x:Name="dgStudyDetails" VerticalAlignment="Stretch" Margin="10,10,10,10" AutoGenerateColumns="False" CanUserAddRows="False">
        <DataGrid.Columns>
                <DataGridTextColumn Header="Study Number" Width="90" Binding="{Binding StudyNumber}" />
                <DataGridTextColumn Header="Start Date" Width="80" Binding="{Binding StartDate,StringFormat=\{0:dd-MMM-yyyy\}}"/>
                <DataGridTextColumn Header="End Date" Width="80" Binding="{Binding EndDate,StringFormat=\{0:dd-MMM-yyyy\}}"/>
                <DataGridTextColumn Header="GLP" Width="30" Binding="{Binding GLP}"/>
                <DataGridTextColumn Header="PK" Width="30" Binding="{Binding PKColony}"/>
                <DataGridTextColumn Header="CP Coordinator" Width="150" Binding="{Binding CPCoordinator}"/>
                <DataGridTextColumn Header="SM Coordinator" Width="150" Binding="{Binding SMCoordinator}"/>
                <DataGridTextColumn Header="Study Director" Width="150" Binding="{Binding StudyDirector}"/>
                <DataGridTextColumn Header="Study Supervisor" Width="150" Binding="{Binding StudySupervisor}"/>
                <DataGridTextColumn Header="Clinical Pathologist" Width="150" Binding="{Binding ClinicalPathologist}"/>
            <DataGridTextColumn Header="Comments" Binding="{Binding StudyComments}"/>
        </DataGrid.Columns>
    </DataGrid>
    </StackPanel>
    



</Grid>

and .cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Data.Entity;

namespace ClinPath.StudyManagement
{
    /// <summary>
    /// Interaction logic for StudyManagementMain.xaml
    /// </summary>
    public partial class StudyManagementMain : Window
    {
        public StudyManagementMain()
        {
            InitializeComponent();
            DataGridLoad();
        }
        //DataSets.ClinPathDB db = new DataSets.ClinPathDB();
        DataSets.StudyManagerDB db = new DataSets.StudyManagerDB();
        public void DataGridLoad()
        {
            dgStudyDetails.ItemsSource = db.StudyView1.ToList();
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {

        }
    }
}
1

There are 1 best solutions below

1
On
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="60"/>
        <RowDefinition Height="*"/>
        
    </Grid.RowDefinitions>

    <Label Grid.Row="0" Content="Study Management" HorizontalContentAlignment="Center" Margin="0,0,0,0" VerticalAlignment="Top" FontSize="20"/>

    <DataGrid Grid.Row="1" x:Name="dgStudyDetails" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="10,10,10,10" AutoGenerateColumns="False" CanUserAddRows="False">
        <DataGrid.Columns>
                <DataGridTextColumn Header="Study Number" Width="90" Binding="{Binding StudyNumber}" />
                <DataGridTextColumn Header="Start Date" Width="80" Binding="{Binding StartDate,StringFormat=\{0:dd-MMM-yyyy\}}"/>
                <DataGridTextColumn Header="End Date" Width="80" Binding="{Binding EndDate,StringFormat=\{0:dd-MMM-yyyy\}}"/>
                <DataGridTextColumn Header="GLP" Width="30" Binding="{Binding GLP}"/>
                <DataGridTextColumn Header="PK" Width="30" Binding="{Binding PKColony}"/>
                <DataGridTextColumn Header="CP Coordinator" Width="150" Binding="{Binding CPCoordinator}"/>
                <DataGridTextColumn Header="SM Coordinator" Width="150" Binding="{Binding SMCoordinator}"/>
                <DataGridTextColumn Header="Study Director" Width="150" Binding="{Binding StudyDirector}"/>
                <DataGridTextColumn Header="Study Supervisor" Width="150" Binding="{Binding StudySupervisor}"/>
                <DataGridTextColumn Header="Clinical Pathologist" Width="150" Binding="{Binding ClinicalPathologist}"/>
            <!--<DataGridTextColumn Header="Comments" Width="*" Binding="{Binding StudyComments}"/>-->
            

            <DataGridTemplateColumn Header="Comments" Width="*">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding StudyComments}" TextWrapping="Wrap" />
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>


        </DataGrid.Columns>
    </DataGrid>
  </Grid>