从文本框到数据网格WPF C#



所以我目前正在尝试一些不同的东西,我想把文本从文本框推送到数据网格中。我目前已经制作了这样的XAML:

XAML:

<Grid>
<DataGrid HorizontalAlignment="Left" Height="160" Margin="138,54,0,0" VerticalAlignment="Top" Width="512">
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Binding="{Binding ID}" Width="*" />
<DataGridTextColumn Header="NAME" Binding="{Binding NAME}" Width="*" />
</DataGrid.Columns>
</DataGrid>
<Label x:Name="lblID" Content="ID:" HorizontalAlignment="Left" Margin="138,239,0,0" VerticalAlignment="Top"/>
<Label x:Name="lblNAME" Content="NAME:" HorizontalAlignment="Left" Margin="138,265,0,0" VerticalAlignment="Top"/>
<TextBox x:Name="txtID" HorizontalAlignment="Left" Height="23" Margin="187,243,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/>
<TextBox x:Name="txtNAAM" HorizontalAlignment="Left" Height="23" Margin="188,271,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/>
<Button x:Name="btnSend" Content="Send" HorizontalAlignment="Left" Margin="233,316,0,0" VerticalAlignment="Top" Width="75"/>
</Grid>

正如你所看到的,我已经有一个名为send的按钮,我有2个名为ID和NAME的文本框。

那么,我如何只需单击1个按钮(SEND(就可以将文本框中的文本添加到数据网格中,以及如何在第二行和第三行中不断重复它,以此类推?

如果您有一个View模型,那么您可以将两个不同的控件绑定到同一字段

这意味着当您更改文本框时,它将使用绑定来更新backing字段,然后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设置为数据上下文

简单而直接的方法是简单地将事件处理程序添加到ButtonClick事件中,并将类的实例添加到其中DataGrid的源集合中,例如:

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; }
}

如果您正在开发企业应用程序,出于可测试性和关注点分离的原因,您应该考虑重构代码,以便在视图(窗口(和模型之间使用视图模型类。这种设计模式被称为MVVM(模型视图视图模型(。

最新更新