Как добавить строку в DataGrid в WPF? - PullRequest
0 голосов
/ 21 апреля 2019

Я пытаюсь добавить строку в DataGrid. Я хочу, чтобы каждый элемент был строкой. Вот что я пробовал:

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

После некоторых исследований я попытался создать элементы ListBox и попробовал это:

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);

Затем, после дополнительных исследований, я попытался использовать DataGridRow, но безуспешно ...

DataGridRow rowt = new DataGridRow();

У меня есть 4 столбца данных. Мои столбцы определены как DataGridTextColumns. Мои строки успешно добавляются, но результаты просто пустые: enter image description here

Какого черта я делаю не так?

EDIT:

Из запроса:

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

Ответы [ 2 ]

2 голосов
/ 21 апреля 2019

Класс

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 Будьте осторожны при связывании.

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

Код для задания элемента источника данных.

myDataGrid.ItemsSource = Foo.myList;

ScreenShot enter image description here

0 голосов
/ 21 апреля 2019

Здесь, во-первых, я заметил, что имя DataGrid неверно myDataGrid и что до отображения пустой строки вы устанавливаете привязку к нулю, так. его отображение пусто, так и если вы хотите связать массив, вы можете использовать привязку, как это

 <DataGrid x:Name="myDataGrid"  HorizontalAlignment="Left" Height="579" VerticalAlignment="Top" Width="611" HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Visible" AutoGenerateColumns="False">


 <DataGrid.Columns>
            <DataGridTextColumn Binding="{Binding [0]}" ClipboardContentBinding="{x:Null}" Header="User Name"/>
            <DataGridTextColumn Binding="{Binding [0]}" ClipboardContentBinding="{x:Null}" Header="Business"/>
            <DataGridTextColumn Binding="{Binding [0]}" ClipboardContentBinding="{x:Null}" Header="City"/>
            <DataGridTextColumn Binding="{x:Null}" ClipboardContentBinding="{x:Null}" Header="Text"/>
        </DataGrid.Columns>
    </DataGrid>




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

обратите внимание, вы можете просто использовать ItemsSource Чтобы связать всю коллекцию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...