添加行dyanamicaly到WPF的gridview
问题描述:
请帮我用下面的代码,我想添加一行用户输入到一个gridview。 我能够添加一行,但它的空!!请help.it工作在Windows窗体中,但它不与WPF一起工作。添加行dyanamicaly到WPF的gridview
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>
答
编辑:您绑定的DataGrid的ItemsSource时,你不能将项目添加到网格本身,而这种情况下,将项目添加到绑定的集合(这是我原来建议的)
我不会建议你做那样的事情。在WPF中,您应该使用bind your controls来处理数据,这样您就可以更改源代码集合,并且网格会自动更新,这比使用接受object
类型的输入的任何方法(如DataGrid.Items.Add
)要更简洁。
例如
的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 2011-01-12 16:14:06
能否请您添加XAML中或DataGrid的其他定义代码,也许错误是要被发现的? – 2011-01-12 15:31:44