我在wpf上有一个datagrid。我用codebehind填充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事件。有人帮忙吗?
答案 0 :(得分:0)
您必须将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 blog
中存在一个很好的解决方案