C# 中List<T>怎么转换成ObservableCollection<T>
时间: 2024-06-02 19:03:50 浏览: 19
在C#中,可以使用以下方法将List<T>转换为ObservableCollection<T>:
1. 使用构造函数:
可以通过将List<T>作为参数传递给ObservableCollection<T>的构造函数来进行转换。例如:
```csharp
List<T> list = new List<T>();
ObservableCollection<T> collection = new ObservableCollection<T>(list);
```
2. 手动添加元素:
可以遍历List<T>中的元素,并将它们逐个添加到ObservableCollection<T>中。例如:
```csharp
List<T> list = new List<T>();
ObservableCollection<T> collection = new ObservableCollection<T>();
foreach (T item in list)
{
collection.Add(item);
}
```
需要注意的是,转换后的ObservableCollection<T>将会包含与原始List<T>相同的元素。
相关问题
C# Winform DataGrid 绑定List<> Or ObservableCollection<> 类型无法自动刷新问题
在C# Winform中,如果想要在DataGrid中实时显示List<>或ObservableCollection<>类型的数据,需要手动触发DataGrid的数据刷新。
方法一:使用BindingList<>代替List<>或ObservableCollection<>
可以使用BindingList<>代替List<>或ObservableCollection<>,因为BindingList<>实现了IBindingList接口,该接口在数据源发生改变时会自动刷新绑定的控件。示例代码如下:
```csharp
BindingList<MyData> dataList = new BindingList<MyData>();
dataGridView1.DataSource = dataList;
```
方法二:手动触发DataGrid数据刷新
如果使用List<>或ObservableCollection<>,则需要手动触发DataGrid的数据刷新。可以通过以下两种方式实现:
1. 重新绑定数据源:
```csharp
List<MyData> dataList = new List<MyData>();
dataGridView1.DataSource = null;
dataGridView1.DataSource = dataList;
```
2. 利用BindingSource实现数据刷新:
```csharp
List<MyData> dataList = new List<MyData>();
BindingSource bs = new BindingSource();
bs.DataSource = dataList;
dataGridView1.DataSource = bs;
```
当数据源发生改变时,只需调用BindingSource的ResetBindings方法即可刷新DataGrid中的数据:
```csharp
dataList.Add(new MyData());
bs.ResetBindings(false);
```
以上两种方法都可以实现DataGrid与List<>或ObservableCollection<>类型数据的实时刷新。
c#observablecollection
C#中的ObservableCollection是一种特殊的集合类型,它可以在集合发生变化时通知绑定到该集合的UI元素进行更新。ObservableCollection继承自ICollectionChanged接口,该接口定义了CollectionChanged事件,当集合发生变化时,该事件会被触发。ObservableCollection还实现了INotifyPropertyChanged接口,该接口定义了PropertyChanged事件,当集合中的元素发生变化时,该事件会被触发。因此,ObservableCollection可以用于在WPF和Silverlight应用程序中实现数据绑定。如果需要在集合中添加自定义的验证逻辑,可以通过扩展ObservableCollection来实现。可以使用CollectionChanged事件来订阅集合变化的通知,例如:
```
this.StudentList.CollectionChanged += StudentList_OnCollectionChanged;
```
或者
```
StudentList.CollectionChanged += new NotifyCollectionChangedEventHandler(StudentList_OnCollectionChanged);
```
相关推荐
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)