如何从其他用户控件插入数据网格记录

本文关键字:数据 数据网 网格 记录 插入 控件 其他 用户 | 更新日期: 2023-09-27 18:08:14

我想插入一些记录到DataGrid grid1,这是在Child1用户控制,我想填充这个数据网格记录从另一个用户控制Child2

我的代码点击如下,

public void cmbEventReceiver_SelectionChanged (object sender, SelectionChangedEventArgs e)   
{
    ComboBoxItem typeItem = (ComboBoxItem)cmbEventReceiver.SelectedItem;
    if (contentTypeDataControl.dtEventReceivers.Rows.Count==0 )
    {
        contentTypeDataControl.dtEventReceivers.Columns.Add("ID");
        contentTypeDataControl.dtEventReceivers.Columns.Add("Name");
    }           
    contentTypeDataControl.dtEventReceivers.Rows.Add(new Object[] { typeItem.Tag, typeItem.Content });
    contentTypeDataControl.dtEventReceivers.AcceptChanges();
    // contentTypeDataControl.grdEventReferences.ItemsSource = contentTypeDataControl.dtEventReceivers.DefaultView;
    //contentTypeDataControl.grdEventReferences.Items.Add(new Object[] { typeItem.Tag, typeItem.Content });
    contentTypeDataControl.FillDataGridEventReceiver(contentTypeDataControl.dtEventReceivers);
    contentTypeDataControl.ppFieldReference.IsOpen = false;
    contentTypeDataControl.wrapPanel.Children.RemoveAt(1);
    contentTypeDataControl.wrapPanel.Focus();            
}
public void FillDataGridEventReceiver(DataTable dt)
{
    grdEventReferences.ItemsSource = dt.DefaultView;
}

但是它没有在我的网格中显示任何东西

如何从其他用户控件插入数据网格记录

我认为这是一个正确的数据绑定问题。

作为DataGrid绑定的简单示例,我将使用以下结构:

viewmodel.cs

public class MyViewModel {
    public ObservableCollection<MyGridObject> GridItems {get; set;}
    public void OnSomethingHappens(MyGridObject newObjectToAdd){
        GridItems.Add(newObjectToAdd);
    }
}
public class MyGridObject {
    public int ID {get; set;}
    public string Name {get; set;}
}

你的模型应该看起来像:

<DataGrid ItemsSource="{Binding GridItems}" />

这就是WPF中处理数据的方式。不要试图直接从代码隐藏操作控件。如果你喜欢这样做,你应该使用WinForms。