Bootstrap

WPF之ObservableCollection

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会自动更新。这大大简化了我们的代码,并提高了代码的可维护性和可读性。

;