2011-09-10 15 views
5

Quando ho modificato un valore di un elemento associato in lista, mi aspettavo che un ordine ordinato dovesse cambiare automaticamente.SortDescription e aggiornamento automatico dell'ordine ordinato

Ma non è così.

Sto chiamando un metodo .SortDescriptions.Clear() e riallocato un SortDescription in questo caso?

. Refresh() non funziona.

a cura

ho legato e situato il di dati di questo tipo;

public Records myRecents; 


.... 

//lbToday is a ListBox. 
//ModifiedTime is a DateTime. 
this.lbToday.ItemsSource = new ListCollectionView(myRecents); 
this.lbToday.Items.SortDescriptions.Add(new SortDescription("ModifiedTime", ListSortDirection.Descending)); 

Quando l'app è stata avviata per la prima volta, ha mostrato il risultato corretto. Ma quando modifico un valore dell'articolo (in questo caso, proprietà 'ModifiedTime'), una vista non cambia. E ho riavviato l'app, mostrando di nuovo un risultato corretto.

EDITED2

Qui è un codice sorgente del Records.

public class Records : ObservableCollection<RecordItem> 
{ 
    public Records() { } 

} 

e qui è un codice sorgente del 'RecordItem'

public class RecordItem : INotifyPropertyChanged 
{ 

    string queryString; public string QueryString { get { return queryString; } set { queryString = value; Notify("QueryString"); } } 

    DateTime modifiedTime; public DateTime ModifiedTime { get { return modifiedTime; } set { modifiedTime = value; Notify("ModifiedTime"); } } 


    public RecordItem() { } 
    public RecordItem(string qStr) 
    { 
     this.queryString = qStr; 
     this.modifiedTime = DateTime.Now; 
    } 

    public event PropertyChangedEventHandler PropertyChanged; 
    protected void Notify(string propName) { if (this.PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(propName)); } } 

} 

Nota

quando ho aggiunto un elemento in myRecents, (la classe Record), funziona bene. Si è verificato un problema solo modificando una proprietà.

+0

puoi mostrare come si stanno vincolando i dati al controllo dell'interfaccia utente? –

+0

Ovviamente. apetta un minuto. – mjk6026

risposta

Problemi correlati