WPF数据网格以编程方式写入新行

本文关键字:方式写 新行 编程 数据 数据网 网格 WPF | 更新日期: 2023-09-27 18:12:51

我在wpf上有一个数据网格。我正在用隐藏代码填充数据网格。我想用编程方式写一个值到datagrid的新行的第一列。例如,我在c#中这样做

private void dataGridView1_RowEnter(object sender, DataGridViewCellEventArgs e)
{
   if (dataGridView1.Rows[e.RowIndex].IsNewRow == true)
   {
       dataGridView1.Rows[e.RowIndex].Cells[0].Value "myValue"
   }
}

它在c#上工作得很好,但在wpf中我有问题。怎么能在wpf上做到这一点。我没有看到RowEnter事件。谁来帮忙?

WPF数据网格以编程方式写入新行

必须将DataGrid的CanUserAddRows依赖属性设置为true。添加一个按钮,通过单击该按钮可以添加新行。

请看下面的例子:

Xaml:

   <DataGrid AutoGenerateColumns="False" Name="DataGridTest" CanUserAddRows="True" ItemsSource="{Binding TestBinding}" Margin="0,50,0,0" >
        <DataGrid.Columns>
            <DataGridTextColumn Header="Line" IsReadOnly="True" Binding="{Binding Path=Test1}" Width="50"></DataGridTextColumn>
            <DataGridTextColumn Header="Account" IsReadOnly="True"  Binding="{Binding Path=Test2}" Width="130"></DataGridTextColumn>
        </DataGrid.Columns>
    </DataGrid>
    <Button Content="Add new row" HorizontalAlignment="Left" Margin="0,10,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click_1"/>
CS:

 /// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }
    private void Button_Click_1(object sender, RoutedEventArgs e)
    {
        var data = new Test { Test1 = "Test1", Test2 = "Test2" };
        DataGridTest.Items.Add(data);
    }
}
public class Test
{
    public string Test1 { get; set; }
    public string Test2 { get; set; }
}

如果您不想为新行添加按钮,在这个MSDN博客中存在一个很好的解决方案