WPF之ObservableCollection
ObservableCollection是WPF中的一个集合类,它是动态数据提供,当集合中的数据发生改变时,界面能够自动更新。
ObservableCollection实现了INotifyCollectionChanged接口
,当集合发生改变(添加、删除、移动、替换)时,它会触发一个CollectionChanged事件。
ObservableCollection的使用方法很简单,你只需要将它当作普通的集合类使用,当你需要更新UI时,你可以直接更新ObservableCollection中的数据,UI会自动进行更新。
以下是ObservableCollection的一个简单使用例子:
XAML部分:
<Window x:Class="WpfApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<ListBox Name="listBox" HorizontalContentAlignment="Stretch"/>
</Grid>
</Window>
C#后台代码部分:
using System.Collections.ObjectModel;
using System.Windows;
namespace WpfApp
{
public partial class MainWindow : Window
{
public ObservableCollection<string> Items { get; set; }
public MainWindow()
{
InitializeComponent();
Items = new ObservableCollection<string>();
listBox.ItemsSource = Items;
Items.CollectionChanged += Items_CollectionChanged;
}
private void Items_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
// 当集合发生变化时,可以在这里做一些额外的处理
}
private void AddItem()
{
Items.Add($"Item {Items.Count}");
}
private void RemoveItem()
{
if (Items.Count > 0)
{
Items.RemoveAt(0);
}
}
// 你可以在你的程序中的任何地方调用AddItem或RemoveItem方法来更新ObservableCollection
}
}
在这个例子中,我们创建了一个ObservableCollection的实例Items,并将其设置为ListBox的ItemsSource。当你调用AddItem或RemoveItem方法时,ObservableCollection会自动更新,ListBox的内容也会随之更新。
ObservableCollection的另一个优点是,它可以与数据绑定结合使用,当数据源(ObservableCollection)发生改变时,UI会自动更新。这大大简化了我们的代码,并提高了代码的可维护性和可读性。