UIの更新に問題があります。私は私のUI要素を結合するために使用され、クラスを持っている:INotifyCollectionChanged UIが更新されない
public class engine : INotifyCollectionChanged
{
RWProject project = new RWProject();
public ObservableCollection<string> ProjectListBinding
{
get { return project.list(); }
}
public event NotifyCollectionChangedEventHandler CollectionChanged;
private void OnCollectionChanged(NotifyCollectionChangedEventArgs eventArgs)
{
if (this.CollectionChanged != null)
{
this.CollectionChanged(this, eventArgs);
}
}
private ICommand _usunProjekt;
public ICommand UsunProjekt
{
get
{
_usunProjekt = new UsunProjektCommand();
return _usunProjekt;
}
}
private ICommand _dodajProjekt;
public ICommand DodajProjekt
{
get
{
_dodajProjekt = new DodajNowyProjektCommand();
return _dodajProjekt;
}
}
}
ProjectListBindingは、フォルダ内のファイル名のリストであり、この名前は、ListViewコントロールに表示されます。
コマンドDodajProjekt同じフォルダ内に新しいファイルを作成する(UsunProjekt - 削除) コマンドはボタンにバインドされます。
は、私がイベント
OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset))
コマンドが実行された後にUIを更新するために上昇する必要がありますが、このコードの一部を添付する場所を私は知っていません。それとも別のやり方でやるべきだろうか? 私が既に持っているコードでは、バインディングとコマンドは正常に動作しています。 これを解決するお手伝いができますか?
Piotr
クラスが 'INotifyCollectionChanged'を実装していて、コレクションインターフェイスも実装しないと意味がありません。 'ICollection'または' IList'です。 – Clemens
はい、そうですが、ObservableCollectionを強制的にリフレッシュしてUI olsoにすることは可能ですか? – Piotr
ObservableCollectionは、要素の追加または削除時にCollectionChangedイベントを発生させます。それ以外は意味をなさないでしょう。既存の要素が変更されたときにUIを更新する必要がある場合、要素クラスはINotifyPropertyChangedを実装する必要があります。 – Clemens