반응형
C#/WPF: ViewModel의 모든 속성에 대해 Property Changed?
이런 수업이 있어요.
public class PersonViewModel : ViewModelBase //Here is the INotifyPropertyChanged Stuff
{
public PersonViewModel(Person person)
{
PersonEntity = person;
}
public Person PersonEntity {
get { return PersonEntity.Name; }
private set { PersonEntity.Name = value; RaisePropertyChanged("PersonEntity");
}
public string Name {
get { return PersonEntity.Name; }
set { PersonEntity.Name = value; RaisePropertyChanged("Name");
}
public int Age{
get { return PersonEntity.Age; }
set { PersonEntity.Age= value; RaisePropertyChanged("Age");
}
public void ChangePerson(Person newPerson)
{
//Some Validation..
PersonEntity = newPerson;
}
내 TextBox는 ViewModel의 이름 및 사용 기간에 바인딩됩니다.View Model에서 _person 객체를 변경한 경우 각 속성에 대해 RaisePropertyChanged를 다시 호출해야 합니까?아니면 자동으로 호출할 수 있는 방법이 있습니까(구체적인 예에서는 약 15개의 속성이 있습니다).
도와주셔서 감사합니다.
건배조셉
다음을 사용하여 모든 속성이 변경되었음을 나타낼 수 있습니다.null
또는string.Empty
의 속성명에 대해서PropertyChangedEventArgs
이는 Property Changed 매뉴얼에 기재되어 있습니다.
이 문제에 대처하기 위해 사용한 또 하나의 솔루션: 먼저 값을 설정하고 나서PropertyChangedEventArgs
를 추가하는 것입니다.Set
기능하다ViewModelBase
다음과 같이 표시됩니다.
public class ViewModelBase : INotifyPropertyChanged
{
protected bool Set<T>(ref T backingField, T value, [CallerMemberName] string propertyname = null)
{
// Check if the value and backing field are actualy different
if (EqualityComparer<T>.Default.Equals(backingField, value))
{
return false;
}
// Setting the backing field and the RaisePropertyChanged
backingField = value;
RaisePropertyChanged(propertyname);
return true;
}
}
이렇게 하는 것이 아니라:
public string Name {
get { return PersonEntity.Name; }
set { PersonEntity.Name = value; RaisePropertyChanged("Name");
}
다음과 같이 하면 동일한 작업을 수행할 수 있습니다.
public string Name {
get { return PersonEntity.Name; }
set { Set(ref PersonEntity.Name,value);
}
언급URL : https://stackoverflow.com/questions/1859946/c-wpf-propertychanged-for-all-properties-in-viewmodel
반응형
'source' 카테고리의 다른 글
디렉토리에서 마지막으로 수정된 5개의 파일을 나열하려면 어떻게 해야 합니까? (0) | 2023.04.19 |
---|---|
Swift에서 문자열을 최신 상태로 변환 (0) | 2023.04.19 |
새 행의 선택 가능 영역을 작게 만들지 않고 WPF DataGrid 셀을 오른쪽으로 정렬하려면 어떻게 해야 합니까? (0) | 2023.04.14 |
콘텐츠가 화면에 맞았을 때 UITableView 테이블 스크롤을 비활성화하는 방법 (0) | 2023.04.14 |
어레이 요소를 ParamArray를 통해 함수에 전달하면 varpointer가 함수에 도달하는 이유는 무엇입니까? (0) | 2023.04.14 |