繁体   English   中英

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

[英]From a textbox to a datagrid 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>

如您所见,我已经有一个名为发送的按钮,并且我有 2 个名为 ID 和 NAME 的文本框。

那么如何仅通过单击 1 个按钮(发送)将文本框中的文本添加到数据网格中,以及如何在第二行和第三行等中继续重复它?

如果您有 View model 那么您可以将 2 个不同的控件绑定到同一字段

这意味着当您更改文本框时,它将使用绑定来更新支持字段,然后虚拟机将通知所有控件他们需要更新值

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事件,并将 class 的实例添加到那里的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; }
}

如果您正在开发企业应用程序,您应该考虑重构代码以使用视图 model class 在视图(窗口)和 model 之间的可测试性和关注点分离。 这种设计模式被称为MVVM (Model-View-ViewModel)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM