Search code examples
c#wpfdatagridscrollbardatagridtextcolumn

Datagrid is not enabling me to scroll between it's columns if I manually add the data


I'm creating a C# project where many columns of Combo Box are added programmatically in a datagrid. Unfortunately when adding many columns, the datagrid is not able to display them all, and the horizontal scroll bar is disabled and unclickable..

Design :

<DataGrid ScrollViewer.CanContentScroll="True" ScrollViewer.HorizontalScrollBarVisibility="Visible"  x:Name="dg" Grid.Column="1" Grid.Row="0" AutoGenerateColumns="false"  Background="#FFDFF9F9" Height="76" VerticalAlignment="Top" Margin="2,82,0,0" HorizontalAlignment="Stretch"/>

Code :

        foreach (var r in importMappings)
        {
            var dgtc = new DataGridTextColumn();
            dgtc.Binding = new Binding(string.Format("[{0}]", r.Key));
            var sp = new StackPanel();
            dgtc.Header = sp;
            sp.Children.Add(new Label { Content = r.Key });
            var combo = new ComboBox();
            sp.Children.Add(combo);
            combo.ItemsSource = excelHeaders;
            int x = combo.SelectedIndex;
            var selectedBinding = new Binding(string.Format("[{0}]", r.Key));
            selectedBinding.Source = importMappings;
            combo.SetBinding(Selector.SelectedIndexProperty, selectedBinding);
            dgtc.CanUserSort = false;
            dgtc.CanUserReorder = false;
            dg.Columns.Add(dgtc);
        }

Live View :

enter image description here

The scroll bar is always disabled here. Any ideas on how to make the scroll bar work ?


Solution

  • It looks like you don't have any data row. After adding a row of data the scrollbar worked for me.

    For testing just edit your datagrid to:

    <DataGrid ScrollViewer.CanContentScroll="True" ScrollViewer.HorizontalScrollBarVisibility="Visible"  x:Name="dg" Grid.Column="1" Grid.Row="0" AutoGenerateColumns="false"  Background="#FFDFF9F9" Height="76" VerticalAlignment="Top" Margin="2,82,0,0" HorizontalAlignment="Stretch">
    <TextBlock />
    </DataGrid>
    

    The scrollbar should be working now.