반응형
C # / WPF : ViewModel의 모든 속성에 대한 PropertyChanged?
다음과 같은 수업이 있습니다.
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의 이름과 나이에 바인딩됩니다. ViewModel에서 _person 개체를 변경하면 각 속성에 대해 RaisePropertyChanged를 다시 호출해야합니까? 아니면이를 자동으로 수행 할 수있는 방법이 있습니까 (내 구체적인 예에서는 약 15 개의 속성이 있습니다.)?
도움을 주셔서 감사합니다.
건배 조셉
당신은 모든 속성을 사용하여 변경된 표시 할 수 있습니다 null
또는 string.Empty
에서 속성 이름 PropertyChangedEventArgs
. 이것은 PropertyChanged 문서에 언급되어 있습니다.
문제를 해결하는 데 사용한 또 다른 해결책은 다음과 같습니다. 먼저 값을 설정 한 다음을 호출하는 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);
}
ReferenceURL : https://stackoverflow.com/questions/1859946/c-wpf-propertychanged-for-all-properties-in-viewmodel
반응형
'IT이야기' 카테고리의 다른 글
WPF / C # : 사용자 기본 설정 파일 저장 위치 (0) | 2021.04.01 |
---|---|
Java jar에서 Windows 서비스를 만드는 방법 (0) | 2021.03.31 |
자바. 문자열을 비교할 때 악센트 무시 (0) | 2021.03.31 |
List가 저장할 수 있는 최대 데이터 (0) | 2021.03.31 |
PHP 오류 : 'Imagick'클래스를 찾을 수 없습니다. (0) | 2021.03.31 |