簡體   English   中英

WPF datagrid以編程方式在新行上寫入?

[英]WPF datagrid write programmatically on new row?

我在wpf上有一個datagrid。 我用后台代碼填充datagrid。 我想以編程方式向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事件。 有人幫忙嗎?

您必須將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博客中存在一個不錯的解決方案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM