добавление строки dyanamicaly в gridview в WPF - PullRequest
0 голосов
/ 12 января 2011

Пожалуйста, помогите мне со следующим кодом, я хочу добавить строку, введенную пользователем, в сетку.Я могу добавить строку, но она пуста !! Пожалуйста, help.it работал в формах Windows, но он не работает с WPF.

private void button1_Click(object sender, RoutedEventArgs e)
        {
            GetGridView();
        }
        private void GetGridView()
        {

      string[] row0 = {textBox1.Text,"Beatles" };

            dataGrid1.Items.Add(row0); 
            dataGrid1.Columns[0].DisplayIndex = 0;
            dataGrid1.Columns[1].DisplayIndex = 1;

     }

////////////////конечно, вот оно

<Window x:Class="WpfApplication2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="964">
    <Grid>
        <DataGrid AutoGenerateColumns="False" Height="274" HorizontalAlignment="Left" Margin="509,12,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="239" DataContext="{Binding}" ItemsSource="{Binding}" ItemStringFormat="{Binding}" SelectedIndex="-1" SelectionChanged="dataGrid1_SelectionChanged">
            <DataGrid.Columns>
                <DataGridTextColumn Header="Header1" />
            <DataGridTextColumn Header="Header" />
        </DataGrid.Columns>
    </DataGrid>
    <TextBox Height="23" HorizontalAlignment="Left" Margin="184,12,0,0" Name="textBox1" VerticalAlignment="Top" Width="120" TextChanged="textBox1_TextChanged" />
    <TextBox Height="23" HorizontalAlignment="Left" Margin="184,187,0,0" Name="textBox2" VerticalAlignment="Top" Width="120" />
    <TextBox Height="23" HorizontalAlignment="Left" Margin="184,125,0,0" Name="textBox3" VerticalAlignment="Top" Width="120" />
    <TextBox Height="23" HorizontalAlignment="Left" Margin="184,66,0,0" Name="textBox4" VerticalAlignment="Top" Width="120" />
    <Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="414,231,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" />
</Grid>

1 Ответ

2 голосов
/ 12 января 2011

Редактировать: вы связали ItemsSource DataGrid, вы не можете добавлять элементы в саму сетку, в то время как это так, добавлять элементы в связанную коллекцию (что я и предлагал)


Я бы не советовал вам делать что-то подобное. В WPF вы должны привязать ваши элементы управления к данным, таким образом вы можете изменить исходную коллекцию, и сетка будет обновляться автоматически, что менее беспорядочно, чем при использовании любого метода, например DataGrid.Items.Add, который принимает ввод тип object.

например.
Xaml:

    <DataGrid ItemsSource="{Binding GridData}" Name="DGrid"/>
    <TextBox Name="TB" Width="100"/>
    <Button Content="Add" Click="Button_Click"/>

Код:

    private ObservableCollection<Employee> gridData = new ObservableCollection<Employee>();
    public ObservableCollection<Employee> GridData
    {
        get { return gridData; }
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        GridData.Add(new Employee(TB.Text, "Beatles?"));
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...