从文本框到datagrid WPF C#
因此,我目前正在尝试一些不同的东西,我想将文本从我的文本框推送到数据网格。目前,我的XAML如下所示: XAML:从文本框到datagrid WPF C#,c#,wpf,C#,Wpf,因此,我目前正在尝试一些不同的东西,我想将文本从我的文本框推送到数据网格。目前,我的XAML如下所示: XAML: 正如你们所看到的,我已经有了一个名为send的按钮,还有一个名为ID和NAME的文本框 那么,我如何只需点击1个按钮(发送)就可以将文本框中的文本添加到数据网格中,以及如何在第二行和第三行等重复该操作?如果您有一个视图模型,那么您可以将两个不同的控件绑定到同一字段 这意味着当您更改文本框时,它将使用绑定来更新备份字段,然后VM将通知所有控件它们需要更新该值 class VM :
正如你们所看到的,我已经有了一个名为send的按钮,还有一个名为ID和NAME的文本框
那么,我如何只需点击1个按钮(发送)就可以将文本框中的文本添加到数据网格中,以及如何在第二行和第三行等重复该操作?如果您有一个视图模型,那么您可以将两个不同的控件绑定到同一字段 这意味着当您更改文本框时,它将使用绑定来更新备份字段,然后VM将通知所有控件它们需要更新该值
class VM : INofityPropertyChanged
{
private string text;
public string Text
{
get=>text;
set{
text=value;
PropertyChanged(this,new PropertyChangedEventArg("Text");
}
}
...
}
然后使用绑定
<TextBox Text="{Binding Text}"/>
<Label Content="{Binding Text}"/>
这假设您已将VM设置为数据上下文简单而直接的方法是,只需将事件处理程序添加到
按钮
的单击
事件,然后将类的实例添加到数据网格
的源集合中,例如:
public partial class MainWindow : Window
{
private readonly ObservableCollection<Model> _items = new ObservableCollection<Model>();
public MainWindow()
{
InitializeComponent();
dataGrid.ItemsSource = _items;
btnSend.Click += BtnSend_Click;
}
private void BtnSend_Click(object sender, RoutedEventArgs e)
{
_items.Add(new Model() { ID = txtID.Text, NAME = txtNAAM.Text });
}
}
public class Model
{
public string ID { get; set; }
public string NAME { get; set; }
}
公共部分类主窗口:窗口
{
私有只读ObservableCollection _items=新ObservableCollection();
公共主窗口()
{
初始化组件();
dataGrid.ItemsSource=\u项;
btnSend.Click+=btnSend\u Click;
}
私有无效BTN发送\单击(对象发送者,路由目标e)
{
_添加(新模型(){ID=txtID.Text,NAME=txtNAAM.Text});
}
}
公共类模型
{
公共字符串ID{get;set;}
公共字符串名称{get;set;}
}
如果您正在开发企业应用程序,您应该考虑重构代码,以便在视图(窗口)和模型之间使用视图模型类,以实现可测试性和关注点分离。这种设计模式被称为。我认为了解MVVM的工作原理是很好的第一步
public partial class MainWindow : Window
{
private readonly ObservableCollection<Model> _items = new ObservableCollection<Model>();
public MainWindow()
{
InitializeComponent();
dataGrid.ItemsSource = _items;
btnSend.Click += BtnSend_Click;
}
private void BtnSend_Click(object sender, RoutedEventArgs e)
{
_items.Add(new Model() { ID = txtID.Text, NAME = txtNAAM.Text });
}
}
public class Model
{
public string ID { get; set; }
public string NAME { get; set; }
}