INotifyPropertyChanged и автоматически сгенерированный MVVM - PullRequest
0 голосов
/ 11 апреля 2020

Я автоматически сгенерировал MVVM следующим образом, запись представляет собой текстовое поле.

namespace Something
{
using System;
using System.Collections.Generic;


public partial class ENT
{
    public int ENT_SIF { get; set; }
}

Пользователь открывает главное окно ввода и нажимает кнопку вставки

namespace ENT.view
{
public partial class Ent
{
    public static System.Windows.Controls.DataGrid datagrid;
    private ObservableCollection<ENT> obs;
    private IDocumentPaginatorSource fixedDoc;

    public Entitet()
    {
        InitializeComponent();
        Load();
    }

    private void Load()
    {
        datagrid = myDataGridEntitet;
        obs = new ObservableCollection<ENTITETI>(nest.ToList());
        Refresh();
    }

    public void Refresh()
    {
        datagrid.ItemsSource = obs;
    }
    private void insertBtn_Click(object sender, RoutedEventArgs e)
    {
        Insert Ipage = new Insert();
        Ipage.ShowDialog();
        Load();
    }
}

, которая открывает окно представления вставки

namespace ENT.view
{
public partial class Insert : Window
{
    public Insert()
    {
        InitializeComponent();
    }

    private void insertBtn_Click(object sender, RoutedEventArgs e)
    {
        HelperEnt executeInsert = new HelperEnt();
        MessageBox.Show(executeInsert.InsertEnt(ent_siftextBox.Text));
        this.Close();
    }
}
}

Который после того, как пользователь вводит данные и нажимает Вставить, выполняет вспомогательную viewModel, которая содержит OnPropertyChanged

namespace Ent.ViewModel
{

public class HelperEnt : Notifier
{

    public HelperEnt()
    { }

    public string InsertEnt(string entSIF)
    {
            ENT newMember = new ENT()
            {
                ENT_SIF = Convert.ToInt32(entSIF),
            };

            _db.ENT.Add(newMember);

            _db.SaveChanges();

            // Call OnPropertyChanged whenever the property is updated
            OnPropertyChanged("insertEnt");
            return "OK";
        }
    }

Как только код входит в OnPropertyChanged, он обнаруживает PropertyChanged как NULL. Должен ли я добавить свою команду onPropertyChanged к автоматически сгенерированному значению, в котором определено свойство, или я все это делаю неправильно?

Я создал вспомогательный класс для запуска INotifyPropertyChanged

namespace Ent.ViewModeli
{
public class Notifier : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    protected void OnPropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}
}
...