Ich habe ein Listenfeld, das mit einer Sammlung von Objekten databound ist. Ich möchte die Art und Weise ändern, wie die Elemente angezeigt werden, um dem Benutzer zu zeigen, welches dieser Objekte das START-Objekt in meinem Programm ist.
Ich habe versucht, dies auf folgende Weise zu tun, aber die Listbox wird nicht automatisch aktualisiert. Auch das Invalidieren des Steuerelements hat nicht funktioniert.
Der einzige Weg, den ich finden kann, ist, die Datenverknüpfungen vollständig zu entfernen und sie wieder hinzuzufügen, aber das ist in meinem Fall 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, die die Liste und das Element, das den Anfang darstellt, verwaltet
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>();
}
}
Im Formular verwende ich den folgenden Code
private void button1_Click(object sender, EventArgs e)
{
PersonManager.Instance.StartPerson = (Person)listBox1.SelectedItem;
}