2011-01-12 4 views
0

Пожалуйста, помогите мне со следующим кодом, я хочу добавить строку, введенную пользователем, в gridview. Я могу добавить строку, но ее пусто !!! Пожалуйста, help.it работал в формах Windows, но не работал с WPF.Добавление строки dyanamicaly в gridview в 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> 

+0

Не могли бы вы добавить Xaml или другой определяющий код DataGrid, может быть ошибка, чтобы найти там? –

ответ

2

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


Я бы не предложил вам сделать что-нибудь подобное. В WPF вы должны указать bind your controls, так что вы можете изменить исходную коллекцию, и сетка будет автоматически обновляться, что менее беспорядочно, чем использование любого метода, например 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?")); 
    } 
+0

Большое спасибо за помощь. Исходная проблема, над которой я работаю, на самом деле различна. Я совершенно смущен тем, как ее реализовать. Поэтому я просто пытался выяснить, могу ли я отображать пользовательские данные по крайней мере в gridView. – keenOnCoding

+0

Могу ли я предложить мне лучший способ сделать это. Вот моя проблема – keenOnCoding

+0

Мне нужно разработать инструмент в визуальной студии об инструменте химического анализа, похожий на Turbo Tax Software. Этот инструмент задает пользователю некоторые вопросы о химическом составе продукта и некоторых производственных данных в течение времени выполнения. На основе значений, введенных пользователем, он выполняет некоторые вычисления (некоторые большие вычисления) на задней панели и выводит/печатает отчет (в виде таблиц/диаграмм) Используемое программное обеспечение: Visual Studio 2010, C# – keenOnCoding

Смежные вопросы