C# 添加元素后刷新ListView
我对Windows开发非常陌生,当然对Metro风格的应用程序开发更是陌生。我不确定我是否理解数据绑定是如何工作的 我有一份物品清单C# 添加元素后刷新ListView,c#,data-binding,microsoft-metro,windows-runtime,C#,Data Binding,Microsoft Metro,Windows Runtime,我对Windows开发非常陌生,当然对Metro风格的应用程序开发更是陌生。我不确定我是否理解数据绑定是如何工作的 我有一份物品清单 private List<Expense> _expenses = new List<Expense>(); public List<Expense> Items { get { return this._expenses; } } 然后我显示它 <UserControl.Reso
private List<Expense> _expenses = new List<Expense>();
public List<Expense> Items
{
get
{
return this._expenses;
}
}
然后我显示它
<UserControl.Resources>
<CollectionViewSource
x:Name="itemsViewSource"
Source="{Binding Items, Mode=TwoWay}"/>
</UserControl.Resources>
<ListView
x:Name="itemListView"
AutomationProperties.AutomationId="ItemsListView"
AutomationProperties.Name="Items"
Margin="120,0,0,60"
ItemsSource="{Binding Source={StaticResource itemsViewSource}}"
SelectionChanged="ItemListView_SelectionChanged"
ItemTemplate="{StaticResource DefaultListItemTemplate}"/>
我希望
列表视图会自动刷新,因为我设置了Mode=TwoWay
,但它没有。我是否误解了这个概念,列表无法刷新?否则,我会做错什么?为了在更改集合后更新UI,您需要它来实现INotifyCollectionChanged
。这将在发生更改时通知UI,并通过在更改顶部重新绑定UI来响应
不过,实现这个接口相当复杂。相反,您应该只使用ObservableCollection
代替List
,场景应该可以正常工作
private ObservableCollection<Expense> _expenses = new ObservableCollection<Expense>();
public ObservableCollection<Expense> Items
{
get
{
return this._expenses;
}
}
private observedcollection\u expenses=new observedcollection();
公共可观测收集项目
{
得到
{
退还此费用;
}
}
非常感谢。在同一主题上,当对象本身发生更改时如何通知?@Jonas对象本身必须实现INotifyPropertyChanged
_data.Items.Add(new Expense
{
Total = 100,
When = new DateTime(2013, 6, 6),
For = "Myself"
});
private ObservableCollection<Expense> _expenses = new ObservableCollection<Expense>();
public ObservableCollection<Expense> Items
{
get
{
return this._expenses;
}
}