私は、オブジェクトのコレクションにデータバインドされたリストボックスを持っています。 私は、これらのオブジェクトのどれが私のプログラムの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プロパティのようなものを持つことです。また、「開始」の人物かどうかを判断するプロパティがある場合は、イベントを発生させるように設定します。多くのオプションがあります。実際にどのように使用されるかによって異なります。 –