как это реализовать в mvvm?
PersonModel:
Код: Выделить всё
namespace Persons.Models
{
class PersonModel
{
public int PersonID { get; set; }
public string Name { get; set; }
public string Surname {get; set; }
public string PersonAge { get; set; }
public string PersonAddress { get; set; }
public string PersonDepartmentID{ get; set; }
public string PersonGroupID{ get; set; }
public string PersonContact{ get; set; }
public string PersonLevelEductationID{ get; set; }
public string PersonDivisionID{get; set; }
public ObservableCollection
Get()
{
ObservableCollection Person_list = new ObservableCollection();
var Connect = ConfigurationManager.ConnectionStrings["MysqlConnection"].ConnectionString;
using (var conn = new MySqlConnection(Connect))
using (var command = new MySqlCommand())
{
conn.Open();
command.Connection = conn;
command.CommandText = @"SELECT person.id, person.name, person.surname, person.address, person.age, person.contact department.name AS 'department', group.name AS 'group', eductation.lavel division.name AS 'division' FROM person
LEFT JOIN department ON department.id = person.departmentID LEFT JOIN group ON group.id = person.groupID LEFT JOIN eductation ON eductation.id = person.eductationLavelID LEFT JOIN division ON division.id = person.divisionID";
MySqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
Person_list.Add(new PersonModel()
{
PersonID = (int)reader["id"],
Name = (string)reader["name"],
Surname = (string)reader["surname"],
PersonAge = (int)reader["age"],
PersonAddress = (string)reader["address"],
PersonDepartmentID = (string)reader["department"],
PersonGroupID= (string)reader["group"],
PersonContact = (string)reader["contact"],
PersonLevelEductationID = (string)reader["lavel"],
PersonDivisionID = (string)reader["division"]
}
) ;
}
reader.Close();
conn.Close();
}
return Person_list;
}
}
}
Код: Выделить всё
namespace Persons.ViewModels
{
class PersonViewModel : ViewModelBase
{
private ObservableCollection
_personList;
private readonly PersonModel _person_Model;
public ObservableCollection PersonItems
{
get => _personList;
set
{
if (_personList!= value)
{
_personList = value;
OnpropertyChanged(nameof(PersonItems));
}
}
}
public PersonViewModel()
{
_person_Model= new PersonModel();
_personList= _person_Model.Get();
}
}
Код: Выделить всё
_selectedViewModel;
set { _selectedViewModel = value; OnPropertyChanged("SelectedViewModel"); }
}
public void CrudView()
{
SelectedViewModel = new CrudPage(); // new usercontrol
}
private ICommand _CrudCommand;
public ICommand ShowPageCommand
{
get
{
if (_CrudCommand == null)
{
_CrudCommand = new RelayCommand(param => CrudView());
}
return _CrudCommand;
}
}
// Close App
public void CloseApp(object obj)
{
MainWindow win = obj as MainWindow;
win.Close();
}
// Close App Command
private ICommand _closeCommand;
public ICommand CloseAppCommand
{
get
{
if (_closeCommand == null)
{
_closeCommand = new RelayCommand(p => CloseApp(p));
}
return _closeCommand;
}
}
}
Код: Выделить всё
namespace Persons.Utilities
{
public class RelayCommand : ICommand
{
private Action execute;
private Func canExecute;
public RelayCommand(Action execute)
{
this.execute = execute;
canExecute = null;
}
public RelayCommand(Action execute, Func canExecute)
{
this.execute = execute;
this.canExecute = canExecute;
}
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
public bool CanExecute(object parameter)
{
return canExecute == null || CanExecute(parameter);
}
public void Execute(object parameter)
{
execute(parameter);
}
}
Подробнее здесь: https://stackoverflow.com/questions/787 ... using-mvvm