public ObservableCollection<App> Apps { get; set; }
public MainWindow()
{
Apps = LoadApps();
listview.ItemsSource = Apps;
}
public void AnotherMethod()
{
Apps = LoadApps();
}
分配给ItemsSource时有效,但每次更改Apps内容时都需要更新ListView。
答案 0 :(得分:1)
ObservableCollection仅在更新集合上的项目时更新ListView项目。 你可以做点什么
public void AnotherMethod()
{
var apps = LoadApps();
Apps.Clear();
Apps.AddRange(apps);
}
或将Apps定义为依赖属性并将其绑定到列表视图ItemSource:
public static readonly DependencyProperty AppsProperty =
DependencyProperty.Register("Apps", typeof (ObservableCollection<App>), typeof (YourClass), new PropertyMetadata(default(ObservableCollection<App>)));
public ObservableCollection<App> Apps
{
get { return (ObservableCollection<App>) GetValue(AppsProperty); }
set { SetValue(AppsProperty, value); }
}
public MainWindow()
{
Apps = LoadApps();
listview.SetBinding(ListView.ItemsSourceProperty, new Binding("Apps"){Source = this})
}
答案 1 :(得分:0)
“应用内容”是什么意思?如果您使用新集合替换整个参考,则需要MainWindow
中的implement INotifyPropertyChanged
。如果项目在内部发生变化,并且您希望在ListView
中进行更新,则需要在App
中实现所述界面。
(注意第一种可能性:通常你不会允许通过创建private readonly
字段来替换引用,显然公开它的公共属性只会有一个getter。)