개체 컬렉션에 데이터 바인딩되는 목록 상자가 있습니다. 프로그램에서이 개체 중 어느 개체가 START 개체인지 사용자에게 표시하기 위해 항목이 표시되는 방식을 수정하려고합니다.INotifyPropertyChanged를 사용하여 목록 상자 항목을 업데이트하는 방법
다음과 같은 방법을 시도했지만 목록 상자가 자동으로 업데이트되지 않습니다. 컨트롤을 무효화해도 작동하지 않았습니다.
내가 찾을 수있는 유일한 방법은 데이터 바인딩을 완전히 제거하고 다시 추가하는 것입니다. 하지만 제 경우에는 바람직하지 않습니다.
다른 방법이 있습니까?
class Person : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private string _name;
public string Name
{
get
{
if (PersonManager.Instance.StartPerson == this)
return _name + " (Start)";
return _name;
}
set
{
_name = value;
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("Name"));
}
}
public Person(string name)
{
Name = name;
}
}
이
클래스 느릅 나무는 내가 그 확신 목록과 나는 다음과 같은 코드private void button1_Click(object sender, EventArgs e)
{
PersonManager.Instance.StartPerson = (Person)listBox1.SelectedItem;
}
매력처럼 작동하는 신속한 응답에 대해 감사드립니다. –
그냥 호기심이 생길 것입니다. 처음부터이 코드를 코딩하면 어떻게이 문제를 해결할 수 있습니까? –
잠재적으로 더 깨끗한 방법은 Name + DisplayName 속성과 같은 것을 사용하는 것일 수 있습니다. 또는 사람이 "시작"사람인지 여부를 결정하는 속성이있는 경우 설정하면 이벤트가 발생합니다. 많은 옵션이 있습니다. 실제로 사용 방법에 달려 있습니다. –