【发布时间】:2011-11-14 09:24:13
【问题描述】:
当我修改绑定在列表框中的项目的值时,我希望排序顺序会自动更改。
但事实并非如此。
在这种情况下,我是否调用 .SortDescriptions.Clear() 方法并重新分配 SortDescription?
.Refresh() 不起作用。
已编辑
我是这样绑定和设置数据的;
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));
当应用程序第一次启动时,它显示了正确的结果。但是当我修改 item 的值(在本例中为“ModifiedTime”属性)时,视图不会改变。我重新启动了应用程序,它再次显示了正确的结果。
EDITED2
这里是Records的源代码。
public class Records : ObservableCollection<RecordItem>
{
public Records() { }
}
这里是“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)); } }
}
注意
当我在 myRecents(Record 类)中添加一个项目时,它运行良好。仅修改属性时出现问题。
【问题讨论】:
-
你能展示你如何将数据绑定到 UI 控件吗?
标签: c# wpf data-binding view