C# 如何使用MVVMWPF从文本框添加文本并将其添加到datagrid
如何使用MVVMWPF从文本框添加文本并将其添加到datagrid 代码: VIEWMODEL现在:C# 如何使用MVVMWPF从文本框添加文本并将其添加到datagrid,c#,wpf,xaml,mvvm,C#,Wpf,Xaml,Mvvm,如何使用MVVMWPF从文本框添加文本并将其添加到datagrid 代码: VIEWMODEL现在: public class GtlS4ViewModel { public ObservableCollection<GtlS4Model> gtls4Label { get; set; } DataTable dt; public void addTables() { dt.Columns.Add("S No.");
public class GtlS4ViewModel
{
public ObservableCollection<GtlS4Model> gtls4Label { get; set; }
DataTable dt;
public void addTables()
{
dt.Columns.Add("S No.");
dt.Columns.Add("Delivery Note");
dt.Columns.Add("Sr No.");
dt.Columns.Add("Customer Part No.");
dt.Columns.Add("Bin S-4 Label");
dt.Columns.Add("Result");
var row1 = this.dt.NewRow();
var row2 = this.dt.NewRow();
var row3 = this.dt.NewRow();
var row4 = this.dt.NewRow();
var row5 = this.dt.NewRow();
var row6 = this.dt.NewRow();
row1["S No."] = 1;
row2["Delivery Note"] = 123456;
row3["Sr No."] = 1235143;
row4["Customer Part No."] = 56487564;
row5["Bin S4 Label"] = 5555656;
row6["Result"] = 6556456454564564;
this.dt.Rows.Add(row1);
this.dt.Rows.Add(row2);
this.dt.Rows.Add(row3);
this.dt.Rows.Add(row4);
this.dt.Rows.Add(row5);
this.dt.Rows.Add(row6);
}
public GtlS4ViewModel()
{
dt = new DataTable();
gtls4Label = new ObservableCollection<GtlS4Model>
{
new GtlS4Model {SNo = 1, DeliveryNo= 1325647, SrNo = 1515151, CustPartNo = 32156444, BinS4Label = 56456456, MasterData = 86864564564},
};
}
}
公共类GtlS4ViewModel
{
公共ObservableCollection gtls4Label{get;set;}
数据表dt;
公共void addTables()
{
dt.列。添加(“编号”);
dt.栏添加(“交货通知单”);
dt.列。添加(“Sr编号”);
dt.栏。添加(“客户零件号”);
dt.列。添加(“Bin S-4标签”);
dt.列。添加(“结果”);
var row1=this.dt.NewRow();
var row2=this.dt.NewRow();
var row3=this.dt.NewRow();
var row4=this.dt.NewRow();
var row5=this.dt.NewRow();
var row6=this.dt.NewRow();
第1行[“编号”]=1;
第2行[“交货通知单”]=123456;
第3行[“Sr编号”]=1235143;
第4行[“客户零件号”]=56487564;
第5行[“垃圾箱S4标签”]=5555656;
第6行[“结果”]=655645654564564;
this.dt.Rows.Add(第1行);
this.dt.Rows.Add(第2行);
this.dt.Rows.Add(第3行);
this.dt.Rows.Add(第4行);
此.dt.Rows.Add(第5行);
this.dt.Rows.Add(第6行);
}
公共GtlS4ViewModel()
{
dt=新数据表();
gtls4Label=新的可观察采集
{
新的GtlS4Model{SNo=1,DeliveryNo=1325647,SrNo=1515151,CustPartNo=32156444,BinS4Label=56456456,MasterData=86864564564},
};
}
}
视图:
我不知道我怎么会做错,但它不会从按钮添加任何数据,而且我对这个环境是全新的
非常感谢您的帮助。好的,那么您想在文本框中输入文本并将其显示在数据网格中吗 如果是,您希望文本显示在新行还是现有行中 您可以在完成将文本输入文本框时处理事件 您需要将datagrid绑定到模型中的属性
更新文本框后,您将更新绑定到datagrid的模型中的属性,视图将更新。您只需将datagrid的“can user add new row”属性设置为true,然后datagrid将始终在底部显示一个空白行,用于创建新条目。这是微软的官方页面:你能澄清一下你到底想让它做什么吗?网格中的每列都有一个文本框。是否希望文本框显示/更新当前选定行的相应列?是否希望文本框向viewmodel的DataTable dt添加一行?说到这里,这个数据表对我来说似乎完全没有使用过。重点是什么?我只想为输入文本框的数据添加一个新行,并将其显示在网格上。是的,数据表完全未使用。我想从现有文本框中添加新行上的数据。但是,由于我对环境还不熟悉,所以我无法做到这一点!是的,但我想在通过mvvm模式单击按钮时添加文本框值
public class GtlS4ViewModel
{
public ObservableCollection<GtlS4Model> gtls4Label { get; set; }
DataTable dt;
public void addTables()
{
dt.Columns.Add("S No.");
dt.Columns.Add("Delivery Note");
dt.Columns.Add("Sr No.");
dt.Columns.Add("Customer Part No.");
dt.Columns.Add("Bin S-4 Label");
dt.Columns.Add("Result");
var row1 = this.dt.NewRow();
var row2 = this.dt.NewRow();
var row3 = this.dt.NewRow();
var row4 = this.dt.NewRow();
var row5 = this.dt.NewRow();
var row6 = this.dt.NewRow();
row1["S No."] = 1;
row2["Delivery Note"] = 123456;
row3["Sr No."] = 1235143;
row4["Customer Part No."] = 56487564;
row5["Bin S4 Label"] = 5555656;
row6["Result"] = 6556456454564564;
this.dt.Rows.Add(row1);
this.dt.Rows.Add(row2);
this.dt.Rows.Add(row3);
this.dt.Rows.Add(row4);
this.dt.Rows.Add(row5);
this.dt.Rows.Add(row6);
}
public GtlS4ViewModel()
{
dt = new DataTable();
gtls4Label = new ObservableCollection<GtlS4Model>
{
new GtlS4Model {SNo = 1, DeliveryNo= 1325647, SrNo = 1515151, CustPartNo = 32156444, BinS4Label = 56456456, MasterData = 86864564564},
};
}
}
<Window x:Class="Gtl_S4_Validator.Views.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Gtl_S4_Validator.Views"
xmlns:vm="clr-namespace:Gtl_S4_Validator.ViewModel"
mc:Ignorable="d"
Title="Window1" Height="720" Width="525">
<Window.Resources>
<vm:GtlS4ViewModel x:Key="ViewModelMain"/>
</Window.Resources>
<Grid Margin="-4,0,-4,-1">
<TextBox x:Name="txtSno" HorizontalAlignment="Left" Height="24" Margin="97,23,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="82" RenderTransformOrigin="0.666,-0.434"/>
<TextBox x:Name="txtDeliveryNo" HorizontalAlignment="Left" Height="21" Margin="97,61,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="82"/>
<Label x:Name="label" Content="S. No." HorizontalAlignment="Left" Margin="10,21,0,0" VerticalAlignment="Top"/>
<Label x:Name="label1" Content="Delivery Note" HorizontalAlignment="Left" Margin="10,59,0,0" VerticalAlignment="Top"/>
<Label x:Name="label2" Content="Sr. No." HorizontalAlignment="Left" Margin="10,100,0,0" VerticalAlignment="Top"/>
<Label x:Name="label3" Content="Customer Part no." HorizontalAlignment="Left" Margin="253,23,0,0" VerticalAlignment="Top"/>
<TextBox x:Name="txtSrNo" HorizontalAlignment="Left" Height="23" Margin="97,100,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="82"/>
<TextBox x:Name="txtCustPartNo" HorizontalAlignment="Left" Height="24" Margin="376,23,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="91"/>
<Label x:Name="label4" Content="Bin S-4 Label" HorizontalAlignment="Left" Margin="253,59,0,0" VerticalAlignment="Top"/>
<TextBox x:Name="txtBinS4Label" HorizontalAlignment="Left" Height="23" Margin="376,59,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="91"/>
<TextBox x:Name="txtMasterData" HorizontalAlignment="Left" Height="23" Margin="376,100,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="91" RenderTransformOrigin="0.337,0.445"/>
<Label x:Name="label5" Content="Master Data" HorizontalAlignment="Left" Margin="253,97,0,0" VerticalAlignment="Top"/>
<Button x:Name="btnValidate" Content="Validate" HorizontalAlignment="Left" Height="27" Margin="182,141,0,0" VerticalAlignment="Top" Width="131" Click="btnValidate_Click"/>
<DataGrid x:Name="GtlS4DataGrid" HorizontalAlignment="Left" Height="408" Margin="10,203,0,0" VerticalAlignment="Top" Width="505" ItemsSource="{Binding gtls4Label}" CanUserAddRows="True">
<DataGrid.Columns>
<DataGridTextColumn Header="S No" Binding="{Binding SNo}"/>
<DataGridTextColumn Header="Delivery Note" Binding="{Binding Delivery Note}" />
<DataGridTextColumn Header="Sr No" Binding="{Binding Sr No}" />
<DataGridTextColumn Header="Customer Part No." Binding="{Binding CustomerPartNo }" />
<DataGridTextColumn Header="Bin S4 Label" Binding="{Binding BinS4Label}" />
<DataGridTextColumn Header="Result" Binding="{Binding MasterData}" />
</DataGrid.Columns>
</DataGrid>
<Button x:Name="btnExport" Content="Export" HorizontalAlignment="Left" Margin="182,616,0,0" VerticalAlignment="Top" Width="75"/>
<Button x:Name="btnClear" Content="Clear" HorizontalAlignment="Left" Margin="283,616,0,0" VerticalAlignment="Top" Width="75"/>
</Grid>
</Window>