Search code examples
wpfdatagrid

How to add a row to a DataGrid in WPF?


I'm trying to add a row in a DataGrid. I want each item to be a string. This is what I've tried:

string[] testRow = { "hi", "h2", "h3", "h4" };
myDataGrid.Items.Add(testRow );

After doing some research I tried making the items ListBox items and tried this:

ListBoxItem user = new ListBoxItem();
user.Content = "hi";

ListBoxItem bname = new ListBoxItem();
bname.Content = "hi2";

ListBoxItem city = new ListBoxItem();
city.Content = "hi3";

ListBoxItem text = new ListBoxItem();
text.Content = "hi4";

ListBoxItem[] row = { user, bname, city, text };

ListBoxItem[] row = { user, bname, city, text };
myDataGrid.Items.Add(row);

Then after more research I tried using DataGridRow but no success either...

DataGridRow rowt = new DataGridRow();

I have 4 data columns. My columns are defined as DataGridTextColumns. My rows add successfully, but the results are just blank: enter image description here

What the heck am I doing wrong?

EDIT:

From request:

                    <DataGrid x:Name="myDataGrid" HorizontalAlignment="Left" Height="579" VerticalAlignment="Top" Width="611" Margin="0,0,-1.286,-1.857" HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Visible" AutoGenerateColumns="False">
                        <DataGrid.Columns>
                            <DataGridTextColumn Binding="{x:Null}" ClipboardContentBinding="{x:Null}" Header="User Name"/>
                            <DataGridTextColumn Binding="{x:Null}" ClipboardContentBinding="{x:Null}" Header="Business"/>
                            <DataGridTextColumn Binding="{x:Null}" ClipboardContentBinding="{x:Null}" Header="City"/>
                            <DataGridTextColumn Binding="{x:Null}" ClipboardContentBinding="{x:Null}" Header="Text"/>
                        </DataGrid.Columns>
                    </DataGrid>

Solution

  • Class

    public class Foo
    {
        public string UserName { get; set; }
        public string Business { get; set; }
        public string City { get; set; }
        public string Text { get; set; }
    
        //Our List
        public static List<Foo> myList = new List<Foo>()
        {
            new Foo() { UserName = "Username1", Business = "Business1", City = "City1", Text = "Text1" },
            new Foo() { UserName = "Username2", Business = "Business2", City = "City2", Text = "Text2" },
            new Foo() { UserName = "Username3", Business = "Business3", City = "City3", Text = "Text3" },
            new Foo() { UserName = "Username4", Business = "Business4", City = "City4", Text = "Text4" },
            new Foo() { UserName = "Username5", Business = "Business5", City = "City5", Text = "Text5" },
            new Foo() { UserName = "Username6", Business = "Business6", City = "City6", Text = "Text6" }
        };
    }
    

    DataGrid Be carefull while binding.

        <DataGrid x:Name="myDataGrid" AutoGenerateColumns="False" IsReadOnly="True">
            <DataGrid.Columns>
                <DataGridTextColumn Binding="{Binding UserName}" ClipboardContentBinding="{x:Null}" Header="User Name"/>
                <DataGridTextColumn Binding="{Binding Business}" ClipboardContentBinding="{x:Null}" Header="Business"/>
                <DataGridTextColumn Binding="{Binding City}" ClipboardContentBinding="{x:Null}" Header="City"/>
                <DataGridTextColumn Binding="{Binding Text}" ClipboardContentBinding="{x:Null}" Header="Text"/>
            </DataGrid.Columns>
        </DataGrid>
    

    The code for setting itemssource of datagrid.

    myDataGrid.ItemsSource = Foo.myList;
    

    ScreenShot enter image description here