You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

121 lines
4.0 KiB

using AddressBook_MVVMSample.Command;
using AddressBook_MVVMSample.Model;
using AddressBook_MVVMSample.SubWindow;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace AddressBook_MVVMSample
{
/// <summary>
/// MainWindow.xaml에 대한 상호 작용 논리
/// </summary>
public partial class MainWindow : Window, INotifyPropertyChanged
{
public DelegateCommand AddCommand { get; set; }
public DelegateCommand DeleteCommand { get; set; }
public DelegateCommand ModiftyCommand { get; set; }
public DelegateCommand ExitCommand { get; set; }
public ObservableCollection<Person> Persons { get; set; }
public event PropertyChangedEventHandler PropertyChanged;
public MainWindow()
{
InitializeComponent();
InitInstance();
}
private void InitInstance()
{
this.DataContext = this;
this.Persons = new ObservableCollection<Person>();
this.Persons.Add(new Person() { Name = "James", Gender = true, PhoneNumber = "123-456-7890", Address = "NewYork" });
this.Persons.Add(new Person() { Name = "Thomas", Gender = true, PhoneNumber = "234-456-7890", Address = "Callifornia" });
this.Persons.Add(new Person() { Name = "Richard", Gender = true, PhoneNumber = "345-456-7890", Address = "Seoul" });
this.Persons.Add(new Person() { Name = "Sally", Gender = false, PhoneNumber = "456-456-7890", Address = "Beijing" });
this.AddCommand = new DelegateCommand(CommandAddAction);
this.DeleteCommand = new DelegateCommand(CommandDeleteAction);
this.ModiftyCommand = new DelegateCommand(CommandModifyAction);
this.ExitCommand = new DelegateCommand(CommandExitAction);
}
private int _selectedIndex;
public int SelectedIndex
{
get { return _selectedIndex; }
set
{
_selectedIndex = value;
OnPropertyChanged(nameof(SelectedIndex));
}
}
private void CommandAddAction(object obj)
{
AddViewWindow add = new AddViewWindow();
if (add.ShowDialog() != true)
return;
this.Persons.Add(add.PersonData);
}
private void CommandDeleteAction(object obj)
{
if (this.SelectedIndex < 0)
{
MessageBox.Show("No selected data.", "Address Book v0.1", MessageBoxButton.OK, MessageBoxImage.Information);
return;
}
this.Persons.RemoveAt(this.SelectedIndex);
}
private void CommandModifyAction(object obj)
{
if (this.SelectedIndex < 0)
{
MessageBox.Show("No selected data.", "Address Book v0.1", MessageBoxButton.OK, MessageBoxImage.Information);
return;
}
Person selectedData = this.Persons[this.SelectedIndex];
Person modifiedData = new Person(selectedData);
AddViewWindow modify = new AddViewWindow(modifiedData, AddViewWindow.ViewType.Modify);
if (modify.ShowDialog() != true)
return;
//this.Persons[this.SelectedIndex] = modifiedData;
selectedData = modifiedData;
}
private void CommandExitAction(object obj)
{
this.Close();
}
private void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
}