问题描述
我有一个符合 mvvm 设计模式的 wpf 项目。这个项目在一个窗口中有一个 datagrid 对象。在子窗体中将数据输入到文本框对象中并在请求新记录时单击“TAMAM”按钮时,如何向“observablecollection”对象添加新记录?
namespace ptkym.Helpers
{
using System.ComponentModel;
using System.Runtime.CompilerServices;
public class ObservableObject : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this,new PropertyChangedEventArgs(propertyName));
}
}
}
namespace ptkym.Helpers
{
using System.Configuration;
using System.Data;
using System.Data.sqlClient;
public class sql_islemleri
{
//private sqlConnection _sqlConnection;
private DataTable _YerelTablo;
private sqlConnection _sqlConnection;
public string sqlSorguCumle { get; set; }
public DataTable YerelTablo()
{
_YerelTablo = new DataTable();
string _connectionString = ConfigurationManager.ConnectionStrings["sql_Baglanti"].ConnectionString;
_sqlConnection = new sqlConnection(_connectionString);
_sqlConnection.open();
sqlDataAdapter _sqlDataAdapter = new sqlDataAdapter(sqlSorguCumle,_sqlConnection);
_sqlDataAdapter.Fill(_YerelTablo);
_sqlDataAdapter.dispose();
_sqlConnection.Close();
return _YerelTablo;
}
}
}
namespace ptkym.Models
{
using ptkym.Helpers;
public class M_PKY_Rapor_Sablon_Ek_1_Planlar : ObservableObject
{
private string dokuman_No;
public string Dokuman_No
{
get { return dokuman_No; }
set { dokuman_No = value; OnPropertyChanged(); }
}
public M_PKY_Rapor_Sablon_Ek_1_Planlar(string dokuman_No)
{
this.Dokuman_No = dokuman_No;
}
}
}
namespace ptkym.viewmodels
{
using ptkym.Helpers;
using ptkym.Models;
using System;
using System.Collections.ObjectModel;
using System.Data;
using System.Data.sqlClient;
using System.Linq;
using System.Windows;
public class VM_PKY_Rapor_Sablon_Ek_1_Planlar
{
sql_islemleri sql = new sql_islemleri();
public RelayCommand displayMessageCommand { get; private set; }
public RelayCommand NewDBRecordCommand { get; private set; }
public M_PKY_Rapor_Sablon_Ek_1_Planlar Aktif_Plan { get; set; }
private ObservableCollection<M_PKY_Rapor_Sablon_Ek_1_Planlar> sablon_Ek_1_Planlar;
public ObservableCollection<M_PKY_Rapor_Sablon_Ek_1_Planlar> Sablon_Ek_1_Planlar
{
get { return sablon_Ek_1_Planlar; }
set { sablon_Ek_1_Planlar = value; }
}
public VM_PKY_Rapor_Sablon_Ek_1_Planlar()
{
sablon_Ek_1_Planlar = new ObservableCollection<M_PKY_Rapor_Sablon_Ek_1_Planlar>();
VerileriDoldur();
displayMessageCommand = new RelayCommand(displayMessage);
NewDBRecordCommand = new RelayCommand(DB_Yeni_Kayit);
}
private void VerileriDoldur()
{
sql.sqlSorguCumle = "SELECT * FROM pky_rapor_sablon_Ek_1_planlar";
DataTable dataTable = new DataTable();
dataTable = sql.YerelTablo();
foreach (DaTarow dr in dataTable.Rows)
{
sablon_Ek_1_Planlar.Add(new M_PKY_Rapor_Sablon_Ek_1_Planlar(dr["Dokuman_No"].ToString()));
}
}
private void DB_Yeni_Kayit(object obj)
{
// codes??
}
}
}
<Window
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:ptkym.Views"
xmlns:lokal="clr-namespace:ptkym.viewmodels"
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
x:Class="ptkym.Views.PKY_Sablon_Ek_1_Planlar"
mc:Ignorable="d"
Title="PKY_Sablon_Ek_1_Planlar" Height="512.534" Width="1196.049">
<Window.DataContext>
<lokal:VM_PKY_Rapor_Sablon_Ek_1_Planlar/>
</Window.DataContext>
<Grid Margin="0,-2,0">
<Grid.ColumnDeFinitions>
<ColumnDeFinition/>
<ColumnDeFinition Width="0*"/>
</Grid.ColumnDeFinitions>
<DataGrid x:Name="Grd" CanUserAddRows="True" ItemsSource="{Binding Sablon_Ek_1_Planlar}"
AutoGenerateColumns="False" HorizontalAlignment="Left" Height="369" Margin="79,42,0"
VerticalAlignment="Top" Width="1053">
<DataGrid.Columns>
<!--DOKÜMAN NO-->
<DataGridTemplateColumn Header="NO">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding Dokuman_No,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
<xctk:ChildWindow WindowState="Open" Width="300" Height="400" DesignerWindowState="Open">
<Grid>
<StackPanel Orientation="Vertical">
<TextBox ></TextBox>
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,300,0">
<Button Content="TAMAM" Command="{Binding NewDBRecordCommand}" Width="150"
Margin="0,20,0"></Button>
<Button Content="İPTAL" Width="150" Margin="0,0"></Button>
</StackPanel>
</Grid>
</xctk:ChildWindow>
</Grid>
</Window>
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)