0
내 요구 사항은 datacontext에서 발생하는 변경 사항을 추적하며 속성 변경시 새 viewmodel을 내역 item.first로 추가했습니다. 두 번째 변경 사항도 반영됩니다. 역사는 이미 추가 된 아이템입니다. 내가 잘못하고있는 것은 도움을주십시오.MVVM 추적 문제 viewmodel
public partial class MainWindow : Window
{
private List<Employee> history;
public List<Employee> History
{
get { return history; }
set { history = value; }
}
public MainWindow()
{
InitializeComponent();
History = new List<Employee>();
this.DataContext = new Employee();
if (DataContext != null)
{
this.DataContextChanged += new DependencyPropertyChangedEventHandler(MainWindow_DataContextChanged);
(this.DataContext as Employee).PropertyChanged += new PropertyChangedEventHandler(MainWindow_PropertyChanged);
}
}
private void MainWindow_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
History.Add((Employee)this.DataContext);
}
private void MainWindow_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
{
}
private void button1_Click(object sender, RoutedEventArgs e)
{
}
}
public class Employee : INotifyPropertyChanged
{
private List<Employee> history;
public List<Employee> History
{
get { return history; }
set { history = value; }
}
private string name;
public string Name
{
get { return name; }
set { name = value; RaisePropertyChanged("Name"); }
}
private string ph;
public string PH
{
get { return ph; }
set { ph = value; RaisePropertyChanged("PH"); }
}
private DateTime dob;
public DateTime DOB
{
get { return dob; }
set { dob = value; RaisePropertyChanged("DOB"); }
}
private int age;
public int Age
{
get { return age; }
set { age = value; RaisePropertyChanged("Age"); }
}
public Employee()
{
History = new List<Employee>();
Name = "MKumar";
Age = 10;
DOB = new DateTime(2004, 7, 8);
PH = "999999999";
PropertyChanged += new PropertyChangedEventHandler(Employee_PropertyChanged);
}
private void Employee_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
History.Add(this);
//throw new NotImplementedException();
}
public event PropertyChangedEventHandler PropertyChanged;
private void RaisePropertyChanged(string name)
{
if (PropertyChanged != null)
this.PropertyChanged(this, new PropertyChangedEventArgs(name));
}
}
감사
개체가reference type
같이 정상
뭔가를 시도하여 기록 목록에서 changments을 반영하기 위해
deep copy
을해야한다 ! K-B, 고마워요! OP (Kumar)의 경우 - 사용하는 클래스가 serializable인지 확인하십시오.) –감사합니다 ... 감사합니다. – WPFUser