Ich habe eine Listbox, die zu einer Auflistung von Objekten datengebunden ist. Ich möchte ändern, wie die Elemente angezeigt werden, um dem Benutzer zu zeigen, welches dieser Objekte das START-Objekt in meinem Programm ist.wie Listbox-Elemente mit INotifyPropertyChanged
Ich habe versucht, dies folgendermaßen zu tun, aber die Listbox wird nicht automatisch aktualisiert. Das Invalidieren des Steuerelements hat auch nicht funktioniert.
Der einzige Weg, den ich finden kann, ist, die Datenbindungen vollständig zu entfernen und es wieder hinzuzufügen. aber in meinem Fall ist das nicht wünschenswert.
Gibt es einen anderen Weg?
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;
}
}
Dies ist die Klasse weicht die Liste und das Element verwaltet, dass der Start
class PersonManager
{
public BindingList<Person> persons { get; set; }
public Person StartPerson { get; set; }
private static PersonManager _instance;
public static PersonManager Instance
{
get
{
if (_instance == null)
{
_instance = new PersonManager();
}
return _instance;
}
}
private PersonManager()
{
persons = new BindingList<Person>();
}
}
I
private void button1_Click(object sender, EventArgs e)
{
PersonManager.Instance.StartPerson = (Person)listBox1.SelectedItem;
}
Vielen Dank für die schnelle Antwort, die wie ein Zauber wirkte! –
nur um neugierig zu sein, wie hätten Sie dieses Problem gelöst, wenn Sie so etwas von Grund auf neu programmiert hätten? –
Ein potenziell sauberer Weg könnte darin bestehen, etwas wie eine Name + DisplayName-Eigenschaft zu haben. Wenn Sie eine Eigenschaft haben, die bestimmt, ob eine Person die Person "Start" war, würde die Einstellung das Ereignis auslösen. Es gibt viele Optionen - es hängt wirklich davon ab, wie es verwendet wird. –