微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

wpf mvvm 新记录如何

如何解决wpf mvvm 新记录如何

我有一个符合 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 举报,一经查实,本站将立刻删除。